2011-10-26 144 views
5

可能重複:
Determining the number of occurrences of each unique element in a vector計數出現使用MATLAB

我有以下數組:

v = [ 1 5 1 6 7 1 5 5 1 1] 

,我需要算值和顯示更多外觀的數字。
從頂部的例子,該解決方案將是1(有五種1的)

在此先感謝

+2

@Jonas:這可能比這更簡單 – Jacob

+0

@Jacob:你是對的。 – Jonas

+1

其他類似的問題:[計算最常見的值](http://stackoverflow.com/questions/1846635),[如何計算矩陣中給定值的元素數量?](http:// stackoverflow。這個MATLAB的循環是否有更優雅的替代品?(http://stackoverflow.com/questions/3427291),[函數來確定pmf(X)在matlab中](http:// http:/ /問題/ 2880933) stackoverflow.com/questions/4068403) – Amro

回答

10

使用mode

如果您需要返回元素的數量爲好,做到以下幾點:

m = mode(v); 
n = sum(v==m); 
fprintf('%d appears %d times\n',m,n); 
1

@Jacob是正確的:mode(v)會給你你需要的答案。

我只是想補充一個很好的方式來表示每個值的頻率:

bar(accumarray(v', 1)) 

將顯示在v每個值的計數一個很好的酒吧圖。

9

另一種方法是使用hist函數,如果你正在處理整數。

numbers=unique(v);  %#provides sorted unique list of elements 
count=hist(v,numbers); %#provides a count of each element's occurrence 

只要確保爲hist函數指定了一個輸出值,或者最終將顯示一個條形圖。