确定向量中每个唯一元素的出现次数

时间:2011-03-22 01:11:37

标签: matlab

如何确定MATLAB向量中值的相对频率?

vector = [ 2 2 2 2 1 1 1 2 2 1 1 1 2 2 2 2 1 2 ];

什么函数会返回每个唯一元素的出现次数?

4 个答案:

答案 0 :(得分:32)

您可以将uniquehistc结合使用以获得相对频率。

A=[1,2,3,1,2,4,2,1]; %#an example vector
unqA=unique(A);

这会将唯一元素设为unqA=[1,2,3,4]。要获得出现次数,

countElA=histc(A,unqA); %# get the count of elements
relFreq=countElA/numel(A);

这会给出countElA=[3,3,1,1]relFreq=[0.3750, 0.3750, 0.1250, 0.1250],这是唯一元素的相对频率。这适用于整数和浮点。

答案 1 :(得分:10)

对于具有浮点值向量的最常见情况,您可以使用函数UNIQUEACCUMARRAY

[uniqueValues,~,uniqueIndex] = unique(vector);
frequency = accumarray(uniqueIndex(:),1)./numel(vector);

答案 2 :(得分:5)

您可以使用功能表格。请使用向量查看此示例。

vector = [ 2 2 2 2 1 1 1 2 2 1 1 1 2 2 2 2 1 2 ];
tabulate(vector);
  Value    Count   Percent
      1        7     38.89%
      2       11     61.11%

如果按百分比顺序需要,请执行:

t = tabulate(vector);
t = sortrows(t, 3)

答案 3 :(得分:0)

参考this回答:

unqV = unique(vector);
y = zeros(size(unqV));
for i = 1:length(unqV)
    y(i) = sum(unqV(i)==vector);
end

unqV = [1 2]
 y = [7 11]