Move multiple rows without swapping
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Rishi Balasubramanian
el 23 de Dic. de 2020
Comentada: Rishi Balasubramanian
el 23 de Dic. de 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 comentarios
Respuesta aceptada
Ive J
el 23 de Dic. de 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 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!