Move multiple rows without swapping
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Rishi Balasubramanian
am 23 Dez. 2020
Kommentiert: Rishi Balasubramanian
am 23 Dez. 2020
Hello,
I have a mxn matrix of binary data. I want to write a code where I find the rows in column n which have 1s in them and move them to bottom of the row. I want a generalised code for this as it will be in a loop where multiple iterations of this will be executed.
%For example, assume this is my matrix
% a b c d e f g h i j k l
H = [0 0 1 1 0 1 0 1 0 1 1 0; %1
0 0 0 1 0 1 1 0 1 0 1 0; %2
0 1 1 0 0 1 1 1 0 0 0 1; %3
0 1 1 0 1 0 1 0 1 0 0 1; %4
0 0 0 1 1 0 0 1 1 0 0 0; %5
0 1 0 0 1 0 0 0 0 0 1 0]; %6
%In column 'l' there are 2 rows with 1s in them (row 3 and 4).
% I want to move rows 3 and 4 to the bottom. My final matrix should look like this.
% a b c d e f g h i j k l
H = [0 0 1 1 0 1 0 1 0 1 1 0; %1
0 0 0 1 0 1 1 0 1 0 1 0; %2
0 0 0 1 1 0 0 1 1 0 0 0; %5
0 1 0 0 1 0 0 0 0 0 1 0; %6
0 1 1 0 0 1 1 1 0 0 0 1; %3
0 1 1 0 1 0 1 0 1 0 0 1]; %4
%Any help is appreciated. I thank in advance.
0 Kommentare
Akzeptierte Antwort
Ive J
am 23 Dez. 2020
H = randi([0 1], 6, 10)
H =
0 1 0 1 1 0 0 0 1 0
1 1 1 0 1 1 0 1 1 1
0 0 0 0 1 0 0 1 0 1
1 1 0 0 1 1 1 0 0 1
1 1 0 0 1 1 1 1 0 0
1 0 1 1 1 1 1 0 1 1
col = 9;
H = [H(H(:, col) < 1, :); H(H(:, col) > 0, :)]
0 0 0 0 1 0 0 1 0 1
1 1 0 0 1 1 1 0 0 1
1 1 0 0 1 1 1 1 0 0
0 1 0 1 1 0 0 0 1 0
1 1 1 0 1 1 0 1 1 1
1 0 1 1 1 1 1 0 1 1
5 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Logical 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!