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

16 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)

Catégories

En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by