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.

 Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 22 Aug. 2016
Bearbeitet: Azzi Abdelmalek am 22 Aug. 2016

0 Stimmen

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 Kommentare

pradeep kumar
pradeep kumar am 22 Aug. 2016
Thanks Azzi. 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.
Azzi Abdelmalek
Azzi Abdelmalek am 22 Aug. 2016
Bearbeitet: Azzi Abdelmalek am 22 Aug. 2016
Relatively, 100x2 is not Huge. And how do you want to use the loop?
pradeep kumar
pradeep kumar am 22 Aug. 2016
Bearbeitet: pradeep kumar am 22 Aug. 2016
I have no idea . So i am asking, is there any way ?
Azzi Abdelmalek
Azzi Abdelmalek am 22 Aug. 2016
I mean your question is not clear, why do you need a for loop, when accumarray can do the job?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Stephen23
Stephen23 am 22 Aug. 2016

1 Stimme

Use accumarray:
out = accumarray(A(:,1),A(:,2),[],@(v){v})

1 Kommentar

pradeep kumar
pradeep kumar am 22 Aug. 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.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by