shift matrix from a specific row
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have a matrix that I need to shift some rows according to a special number i, for example if i=3 I have to shift all rows from row 3 down because I have to add new elements to that row, so I should shift all the rows after this one (rows 1 and 2 have to stay the same.) for doing this I added a new row to my matrix with all elements of zero, and now I have to shift this row of zeros (which is the last row) to the i'th row. for example:
i=3
a=[1,2,3;4,5,6;7,8,9,10,11,12]
and I want to add b=[8,8,8] to the third row, so rows: 7,8,9 and 10,11,12 have to shift down. after adding row of zeros:
a=[1,2,3;4,5,6;7,8,9,10,11,12;0,0,0]
and then row 0,0,0 should be shifted to the third row which is 7,8,9 and row 7,8,9 should shift to 4th row and so on.. how can I do this in matlab?
0 commentaires
Réponse acceptée
Geoff Hayes
le 9 Fév 2018
negin - if you want to insert b as the third row of a then you could just do
a = [1,2,3;4,5,6;7,8,9;10,11,12];
b = [8 8 8];
a = [a(1:2,:) ; b ; a(3:end,:)];
In the above, we just concatenate the first two rows of a (that is, a(1:2,:)) with b and then with the remaining rows of a to get
a =
1 2 3
4 5 6
8 8 8
7 8 9
10 11 12
Plus de réponses (1)
KL
le 9 Fév 2018
Pretty much the same answer as Geoff Hayes' but just with a handle,
add_row = @(ind,a) [a(1:ind-1,:); zeros(1,size(a,2)); a(ind:end,:)];
ind=3
a=[1,2,3;4,5,6;7,8,9;10,11,12]
b = add_row(ind,a)
2 commentaires
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices 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!