shift a block of rows to the end of a matrix

5 vues (au cours des 30 derniers jours)
LH
LH le 22 Nov 2022
Commenté : LH le 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.

Réponse acceptée

Stephen23
Stephen23 le 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

Plus de réponses (0)

Catégories

En savoir plus sur Scatter Plots 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