How can I count the frequency of each element of one vector?

3 次查看(过去 30 天)
Hi,I have this code which gives the number of occurrences of each element of w vector in vector y
a= [7 4 9 6 4 10 9 6 7 6]
y=zeros(size(a));
for i=1:length(a)
y(i)=sum(a==a(i));
end
y = y;
end
y=[2 2 2 3 2 1 2 3 2 3]
but this result is not enough because I need to know the index along with the number of repartitions.
the result should look like:
element no of repartitions position1 position2 position3
7 2 1 9 0
4 2 2 5 0
9 2 3 7 0
6 3 4 8 10
10 1 0 0 0

回答(1 个)

Azzi Abdelmalek
Azzi Abdelmalek 2014-4-12
编辑:Azzi Abdelmalek 2014-4-12
a= [7 4 9 6 4 10 9 6 7 6]
[b,idx]=unique(a)
[~,jdx]=sort(idx);
[ii,jj]=histc(a,b)
d=accumarray(jj',(1:numel(jj))',[],@(x) {[x' zeros(1,max(ii)-numel(x))]})
out=[b' ii' cell2mat(d)]
out=out(jdx,:)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

标签

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by