计算数组中的重复值

时间:2015-06-01 19:40:53

标签: arrays matlab function

有人可以帮我在Matlab中创建一个函数吗?我有一个包含40个元素的数组,其中一些元素是重复的。

我需要创建一个函数来计算数组中的重复值并打印出这样的字符,即:

Number 21 repeats 4 time(s)
Number 25 repeats 1 time(s)
Number 40 repeats 3 time(s) etc.

提前谢谢你。我已经尝试了几个小时。

2 个答案:

答案 0 :(得分:4)

您可以使用uniquehistc

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

或使用uniqueaccumarray

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)