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?

 채택된 답변

Geoff Hayes
Geoff Hayes 2018년 2월 9일

1 개 추천

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

추가 답변 (1개)

KL
KL 2018년 2월 9일

0 개 추천

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

negin tebyani
negin tebyani 2018년 2월 9일
thank you for the answer
KL
KL 2018년 2월 9일
You're very welcome!

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터 및 File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

태그

질문:

2018년 2월 9일

댓글:

KL
2018년 2월 9일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by