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

我怎样才能确定在一个MATLABvector的价值的相对频率?

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

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

你可以使用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] ,这是唯一元素的相对频率。 这将适用于整数和浮点。

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

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

您可以使用function列表。 看你的向量这个例子。

 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) 

从这个答案引用:

 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]