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

23 次查看(过去 30 天)
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

采纳的回答

Matt J
Matt J 2020-12-18
编辑:Matt J 2020-12-18
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 个评论
Rishi Balasubramanian
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.

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

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

Start Hunting!

Translated by