如何确定MATLAB向量中值的相对频率?
vector = [ 2 2 2 2 1 1 1 2 2 1 1 1 2 2 2 2 1 2 ];
什么函数会返回每个唯一元素的出现次数?
答案 0 :(得分:32)
您可以将unique
与histc
结合使用以获得相对频率。
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)
对于具有浮点值向量的最常见情况,您可以使用函数UNIQUE和ACCUMARRAY:
[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]