Select a row and append it at the end of a matrix | Move a selected row to end of matrix

24 vues (au cours des 30 derniers jours)
Hello People,
Assume i have a matrix H =
[1 0 0 1
0 1 0 0
1 1 1 0
1 1 0 1
0 1 0 1
0 0 1 1]
Now I want to move row number 2 and 4 to the end of the matrix. NOT SWAP.
Like removing row 2 & row 4 and appending them after row 6. The remaining rows cascade upward in the same order.
I need pointers on how to achieve this. I unknowingly used swap and realised that it was the reason my algorithm failed. Any help would be appreciated.
Thank You

Réponse acceptée

Matt J
Matt J le 18 Déc 2020
Modifié(e) : Matt J le 18 Déc 2020
H=[1 0 0 1
0 1 0 0
1 1 1 0
1 1 0 1
0 1 0 1
0 0 1 1];
rows2move=[2,4];
idx=[setdiff(1:size(H,1), rows2move), rows2move];
H=H(idx,:)
H = 6×4
1 0 0 1 1 1 1 0 0 1 0 1 0 0 1 1 0 1 0 0 1 1 0 1
  6 commentaires
Rishi Balasubramanian
Rishi Balasubramanian le 18 Déc 2020
But what I don't understand is this. In my version, i used FIND function to find the indexes of the rows that have 1s in them.
This is your version
rows = H(:,c1)==1;
I don't understand how it works. It works. But i can't figure out how and why. Could you explain it, as I will be using many versions of this across my algorithm. It'll be really helpful.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by