Count all unique elements in a 3d matrix
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi all,
I have created a 3-d matrix randworld and would like to list the unique elements, count the number of unique elements and count the size of the unique elements for randworld(:,:,1), randworld(:,:,2) and randomworld(:,:,3). e.g. 4, 7, 13 is one unique element in this matrix with size 3.
randworld(:,:,1) =
4 4 3 11 11
4 9 3 9 10
2 7 9 3 9
7 6 6 9 3
4 1 15 15 13
randworld(:,:,2) =
7 7 6 3 3
7 11 6 6 10
11 4 11 9 6
4 15 15 6 9
1 8 5 5 5
randworld(:,:,3) =
13 13 9 4 4
13 11 9 3 6
13 4 11 12 3
4 1 1 3 12
11 5 15 15 15
Any help will be appreciated.
Thanks, Vishal
3 comentarios
Jan
el 8 de Ag. de 2013
I do not understand: "4, 7, 13 is one unique element in this matrix with size 3." I see 9 elements of the value 4.
Could you provide a real example for the outputs for a [3x3x3] array?
Respuesta aceptada
Azzi Abdelmalek
el 8 de Ag. de 2013
a1=randworld(:,:,1)
a2=randworld(:,:,2)
a3=randworld(:,:,3)
v=cell2mat(arrayfun(@(x1,x2,x3) [x1 x2 x3],a1(:),a2(:),a3(:),'un',0));
[a,b,c]=unique(v,'rows','stable')
idx=histc(c,(1:size(a,1))')
% a represent unique vectors
% idx represent the repetition of each vector
4 comentarios
Azzi Abdelmalek
el 8 de Ag. de 2013
Or simply
a1=randworld(:,:,1);
a2=randworld(:,:,2);
a3=randworld(:,:,3);
v1=[a1(:) a2(:) a3(:)];
[a,b,c]=unique(v,'rows','stable')
idx=histc(c,(1:size(a,1))')
Más respuestas (2)
Jan
el 8 de Ag. de 2013
It sounds like a basic task for unique and histc. But currently I do not understand the needs exactly.
1 comentario
Azzi Abdelmalek
el 8 de Ag. de 2013
I think, he wants to form vectors from each chanel:
vector1= [a(1,1,1) a(1,1,2) a(1,1,3)]
vector2=[a(1,2,1) a(1,2,2) a(1,2,3)]
and so on
dpb
el 8 de Ag. de 2013
Permutation on above...
rpr=permute(r,[1 3 2]);
r2d=rpr(:,:,1);for i=2:size(rpr,3),r2d=[r2d; rpr(:,:,i)];end
u=unique(r2d,'rows','stable');
2 comentarios
dpb
el 12 de Ag. de 2013
Well, one presumes one would use the u as in the previous to determine the rest having found them. Didn't see any point in repeating that.
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!