shift a block of rows to the end of a matrix

2 Ansichten (letzte 30 Tage)
LH
LH am 22 Nov. 2022
Kommentiert: LH am 22 Nov. 2022
Hi,
Suppose I have a matrix:
A = [0 0.2000;
0 0.1578;
0 0.0721;
0 0;
0 0;
0.2000 0;
0.3993 0;
0.4000 0;
0.5428 0;
0.6000 0];
and I need to shift all rows from the beginning until the first ( 0 0) to be put at the end of the matrix so it looks as:
A = [0 0;
0.2000 0;
0.3993 0;
0.4000 0;
0.5428 0;
0.6000 0;
0 0.2000;
0 0.1578;
0 0.0721;
0 0];
I understand that circshift could work, but a generic algorithm of how to do such a shift would be helpful for any matrix A of such form.
Any help would be appreicted.

Akzeptierte Antwort

Stephen23
Stephen23 am 22 Nov. 2022
A = [0,0.2;0,0.1578;0,0.0721;0,0;0,0;0.2,0;0.3993,0;0.4,0;0.5428,0;0.6,0]
A = 10×2
0 0.2000 0 0.1578 0 0.0721 0 0 0 0 0.2000 0 0.3993 0 0.4000 0 0.5428 0 0.6000 0
N = find(all(A==0,2),1,'first');
B = circshift(A,-N,1)
B = 10×2
0 0 0.2000 0 0.3993 0 0.4000 0 0.5428 0 0.6000 0 0 0.2000 0 0.1578 0 0.0721 0 0

Weitere Antworten (0)

Kategorien

Mehr zu Resizing and Reshaping Matrices 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!

Translated by