确定向量中每个唯一元素的出现次数
我怎样才能确定在一个MATLABvector的价值的相对频率?
vector = [ 2 2 2 2 1 1 1 2 2 1 1 1 2 2 2 2 1 2 ];
什么函数会返回每个独特元素的出现次数?
你可以使用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]
,这是唯一元素的相对频率。 这将适用于整数和浮点。
对于具有浮点值向量的最常见情况,可以使用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]