有人可以帮我在Matlab中创建一个函数吗?我有一个包含40个元素的数组,其中一些元素是重复的。
我需要创建一个函数来计算数组中的重复值并打印出这样的字符,即:
Number 21 repeats 4 time(s)
Number 25 repeats 1 time(s)
Number 40 repeats 3 time(s) etc.
提前谢谢你。我已经尝试了几个小时。
答案 0 :(得分:4)
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);
答案 1 :(得分:-1)
你可以试试这个:
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)