How do I swap 2 rows of a cell array?
29 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Pietro Fedrizzi
am 21 Okt. 2021
Kommentiert: dpb
am 21 Okt. 2021
I have a 3x2 cell array and I need to swap row 2 and row 3. How can I solve this simple problem? Is there a function to do so that I don't know?
0 Kommentare
Akzeptierte Antwort
dpb
am 21 Okt. 2021
One way...
>> C=num2cell(randi(10,3,2))
C =
3×2 cell array
{[5]} {[1]}
{[9]} {[5]}
{[6]} {[5]}
>> C(2:3,:)=flipud(C(2:3,:))
C =
3×2 cell array
{[5]} {[1]}
{[6]} {[5]}
{[9]} {[5]}
>>
7 Kommentare
Bruno Luong
am 21 Okt. 2021
"Change the indices to 2 and 4 (presuming at least four rows in the array, of course) and they don't do the same thing at all."
??? I just don't know what your are trying to say here. They do the same thing to my book
C=num2cell(randi(10,5,2))
Corg = C;
% dpb method
C([2 4],:)=flipud(C([2 4],:))
C=Corg;
% Bruno method
C([2 4],:)=C([4 2],:)
dpb
am 21 Okt. 2021
You wrote above
% dpb method
C([2 4],:)=flipud(C([2 4],:))
but that is NOT the code I wrote; you elided the colon that selects contiguous rows.
What I actually wrote in the original answer was
C([2:3],:)=flipud(C([2:3],:));
So, when change the 3 to a 4 one will get 3 rows instead of just two because I assumed (given the OP's example) there could be a more general case of wanting more than just two rows.
You just missed seeing the other colon, Bruno...
Weitere Antworten (1)
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!