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

cMi*_*nor 15 matlab

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

vector = [ 2 2 2 2 1 1 1 2 2 1 1 1 2 2 2 2 1 2 ];
Run Code Online (Sandbox Code Playgroud)

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

abc*_*bcd 32

您可以unique结合使用histc来获得相对频率.

A=[1,2,3,1,2,4,2,1]; %#an example vector
unqA=unique(A);
Run Code Online (Sandbox Code Playgroud)

这给出了独特的元素unqA=[1,2,3,4].要获得出现次数,

countElA=histc(A,unqA); %# get the count of elements
relFreq=countElA/numel(A);
Run Code Online (Sandbox Code Playgroud)

这给出了countElA=[3,3,1,1]relFreq=[0.3750, 0.3750, 0.1250, 0.1250],这是独特元素的相对频率.这适用于整数和浮点数.


gno*_*ice 10

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

[uniqueValues,~,uniqueIndex] = unique(vector);
frequency = accumarray(uniqueIndex(:),1)./numel(vector);
Run Code Online (Sandbox Code Playgroud)


Der*_*rzu 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%
Run Code Online (Sandbox Code Playgroud)

如果您需要按百分比顺序,请执行以下操作:

t = tabulate(vector);
t = sortrows(t, 3)
Run Code Online (Sandbox Code Playgroud)