How can I insert row into matrix without deleting its values?

577 views (last 30 days)
Hello all! I want to insert row into the matrix, for example I have a=[1,2;4,9;11,12;3,6], and b=[0,0] ; now I want to insert b into a in the third position like this a=[1,2;4,9;0,0;11,12;3,6]. Any ideas?

Sign in to comment.

Accepted Answer

Matz Johansson Bergström
Matz Johansson Bergström on 28 Jan 2015
Edited: Matz Johansson Bergström on 28 Jan 2015
The only way I know of is to create a new matrix consisting of A and the row and then append the three matrices together, for instance
A = [1,1; 2,2; 3,3];
b = [6,7];
k = 0; %row position, can be 0,1,2 or 3 in this case
A = [A(1:k,:); b; A(k+1:end,:)]

Sign in to comment.

More Answers (2)

Stalin Samuel
Stalin Samuel on 28 Jan 2015
b=[0,0] ;
row_no=3 %%where wants to insert
a(1:row_no-1,:) = a(1:row_no-1,:)
tp =a(row_no:end,:)
a(row_no+1:end+1,:) =tp
  1 Comment
Riyadh Muttaleb
Riyadh Muttaleb on 14 Mar 2017
Hi Stalin,
I would like to insert rows by using loop, your help would be so appreciated,

Sign in to comment.

Anil Kamat
Anil Kamat on 1 Oct 2021
Edited: Anil Kamat on 1 Oct 2021
Just in case the insert position is variable.
emt_lpfc=[]; emt_rpfc = []; emt_lpmc =[]; emt_rpmc =[]; emt_sma=[];
A = rand(3,3)
emt_lpfc = 1;
emt_sma = 5;
emt_reg = [emt_lpfc emt_rpfc emt_lpmc emt_rpmc emt_sma];
temp = [];
if isempty(emt_reg) == 0
for i = 1:size(emt_reg,2)
%for filling rows
temp = A(emt_reg(i):end,:);
A(emt_reg(i),:)= zeros(size(A,1),1);
A (emt_reg(i)+1:end,:) = [];
A = [A ; temp];
%for filling columns
temp = [];
temp = A(:,emt_reg(i):end);
A(:,emt_reg(i))= zeros(1,size(A,1));
A (:,emt_reg(i)+1:end) = [];
A = [A temp];

Community Treasure Hunt

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

Start Hunting!