如何确定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
对于具有浮点值向量的最常见情况,可以使用UNIQUE和ACCUMARRAY函数:
[uniqueValues,~,uniqueIndex] = unique(vector);
frequency = accumarray(uniqueIndex(:),1)./numel(vector);
Run Code Online (Sandbox Code Playgroud)
您可以使用功能表.使用向量查看此示例.
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)