有人可以幫助我在Matlab中創建函數嗎?我有一個包含40個元素的數組,其中一些元素是重複的。計算數組中的重複值
我需要創建一個計算數組中的重複值的函數,並打印這樣即:
Number 21 repeats 4 time(s)
Number 25 repeats 1 time(s)
Number 40 repeats 3 time(s) etc.
預先感謝您。我一直在努力幾個小時。
有人可以幫助我在Matlab中創建函數嗎?我有一個包含40個元素的數組,其中一些元素是重複的。計算數組中的重複值
我需要創建一個計算數組中的重複值的函數,並打印這樣即:
Number 21 repeats 4 time(s)
Number 25 repeats 1 time(s)
Number 40 repeats 3 time(s) etc.
預先感謝您。我一直在努力幾個小時。
你可以試試這個:
array = randi(40,1,40)
array_labels = unique(array)
% counter(length(array_labels))=0
counter = zeros(1,length(array_labels))
for j=1:length(array_labels)
for i=1:40
if array(i)==array_labels(j)
counter(j) = counter(j) + 1;
end
end
end
counter
final = horzcat(array_labels',counter')
sum(counter)
另外,其他答案是更好的方法。如果沒有必要,你應該儘量不要使用循環。另一個答案提供了一個更簡潔和有效的解決方案 – Matt
x = [1 3.5 4 3.5 4 9 7 9 4 2]; %// example data
unique_values = unique(x(:));
counts = histc(x(:), unique_values);
的這個例子的結果是:
unique_values.' =
1.0000 2.0000 3.5000 4.0000 7.0000 9.0000
counts.' =
1 1 2 3 1 2
或者使用unique
和accumarray
:
x = [1 3.5 4 3.5 4 9 7 9 4 2]; %// example data
[unique_values, ~, labels] = unique(x(:));
counts = accumarray(labels, 1);
如果你從以前的嘗試之一添加代碼,我們可以使用它作爲基地,以幫助您識別出了什麼問題以及如何解決它。 –
嗨,我無法弄清楚如何做到這一點,你可以提供一個示例數組,將解決問題 – user3070259
簽出[這個](http://www.mathworks.com/matlabcentral/answers/19042-finding-duplicate-每列值) – dlavila