Borrar filtros
Borrar filtros

problems with matrix splitting

1 visualización (últimos 30 días)
pradeep kumar
pradeep kumar el 22 de Ag. de 2016
Comentada: Azzi Abdelmalek el 22 de Ag. de 2016
Hello everyone, I want to split the matrix in such a way that when elements of 1st column are equal, the correspnding elements can be splitted into another matrix. For example, i have the following matrix.
A = [ 1 2; 1 3; 1 4; 2 1; 2 4].
i want to get the following 2 matrices as the resulting matrices.
a1 = [2;3;4] and a2= [1;4]
i have just started learning the looping in MATLAB, your coperation will be highly appreciated.

Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 22 de Ag. de 2016
Editada: Azzi Abdelmalek el 22 de Ag. de 2016
A = [ 1 2; 1 3; 1 4; 2 1; 2 4]
[ii,jj,kk]=unique(A(:,1),'stable')
out=accumarray(kk,A(:,2),[],@(x){x})
celldisp(out)
  4 comentarios
pradeep kumar
pradeep kumar el 22 de Ag. de 2016
Editada: pradeep kumar el 22 de Ag. de 2016
I have no idea . So i am asking, is there any way ?
Azzi Abdelmalek
Azzi Abdelmalek el 22 de Ag. de 2016
I mean your question is not clear, why do you need a for loop, when accumarray can do the job?

Iniciar sesión para comentar.

Más respuestas (1)

Stephen23
Stephen23 el 22 de Ag. de 2016
Use accumarray:
out = accumarray(A(:,1),A(:,2),[],@(v){v})
  1 comentario
pradeep kumar
pradeep kumar el 22 de Ag. de 2016
Thanks Stephen. That was a great help indeed. but , please note that in my actual problem A is a huge matrix of order (100 X 2). Is there anyway to use the accumarray inside a loop ? kindly help me.

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements 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!

Translated by