2014-04-26 62 views

回答

4

使用hist

我假定你的載體A排序。

A = [1,2,4,6,7,7,7,9,10,11,11,11,13,13,13]; 
occ = 3; 

out = A(hist(A,A) == occ) 

給出了:如果有也是負數

A = [7,7,7,1,2,4,6,9,10,11,11,11,13,13,13] 
occ = 3; 

out = find(histc(A,1:max(A)) == occ) 

out = 

    7 11 13 

如果A沒有排序,你可以對它進行排序,當然,或:

A = [7,7,7,-4,6,-9,10,-11,-11,-11,13,13,13,-20] 
occ = 3; 

out = find(histc(A,min(A):max(A)) == occ) + min(A)-1 

或簡單的版本是工作壓力太大:

A = sort(A); 
out = A(hist(A,A) == occ) 

>> out = -11  7 13 

另一種方便的方法是使用統計工具箱,這將甚至十進制值工作的tabulate功能!

A = [7.5,7.5,7.5,-4,6,-9,10,-11,-11,-11,13,13,13,-20] 
occ = 3; 

T = tabulate(A); 
out = T(T(:,2) == occ ,1) 

>> out = 

    -11.0000 
    7.5000 
    13.0000 
+0

+1已經,但現在好奇的未排序的情況與負數。 – Divakar

+0

@Divakar:見last編輯:) – thewaywewalk

+0

'sort'的明確用法對我有意義:) – Divakar

3

您可以mode最容易做到這一點。要獲得所有值,你應該使用第三輸出,這將是一個單元陣列:

[~, ~, result] = mode(list_A); 
result = result{1}.'; 

編輯

如果您的載體已經排序,你想利用這一點(這mode顯然不會做),你可以手動difffindmax做到這一點:

ii = find(diff([list_A inf])); 
dii = diff(ii); 
result = list_A(ii(find(dii==max(dii))+1)); 
+0

'mode'在這裏很有意義! – Divakar

+0

哇!它甚至是一個標準功能!你只限於最常用的值,但這就是標題所說的。 – thewaywewalk

相關問題