Azzera filtri
Azzera filtri

problems with matrix splitting

1 visualizzazione (ultimi 30 giorni)
pradeep kumar
pradeep kumar il 22 Ago 2016
Commentato: Azzi Abdelmalek il 22 Ago 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.

Risposta accettata

Azzi Abdelmalek
Azzi Abdelmalek il 22 Ago 2016
Modificato: Azzi Abdelmalek il 22 Ago 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 Commenti
pradeep kumar
pradeep kumar il 22 Ago 2016
Modificato: pradeep kumar il 22 Ago 2016
I have no idea . So i am asking, is there any way ?
Azzi Abdelmalek
Azzi Abdelmalek il 22 Ago 2016
I mean your question is not clear, why do you need a for loop, when accumarray can do the job?

Accedi per commentare.

Più risposte (1)

Stephen23
Stephen23 il 22 Ago 2016
Use accumarray:
out = accumarray(A(:,1),A(:,2),[],@(v){v})
  1 Commento
pradeep kumar
pradeep kumar il 22 Ago 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.

Accedi per commentare.

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by