Matlab - insert/append rows into matrix iteratively
Solution 1
m = [m ; new_row];
in your loop. If you know the total row number already, define m=zeros(row_num,column_num);
, then in your loop m(i,:) = new_row;
Solution 2
Just use
m = [m; row];
Take into account that extending a matrix is slow, as it involves memory reallocation. It's better to preallocate the matrix to its full size,
m = NaN(numRows,numCols);
and then fill the row values at each iteration:
m(ii,:) = row;
Also, it's better not to use i
as a variable name, because by default it represents the imaginary unit (that's why I'm using ii
here as iteration index).
Solution 3
To create and add a value into the matrix you can do this and can make a complete matrix like yours. Here row = 5 and then column = 3 and for hence two for loop.
Put the value in M(i, j)
location and it will insert the value in the matrix
for i=1:5
for j=1:3
M(i, j) = input('Enter a value = ')
end
fprintf('Row %d inserted successfully\n', i)
end
disp('Full Matrix is = ')
disp(M)
Provably if you enter the same values given, the output will be like yours,
Full Matrix is =
1 2 3
3 2 1
1 2 3
4 3 2
1 1 1
Andrius
Updated on June 12, 2020Comments
-
Andrius almost 4 years
How in matlab I can interactively append matrix with rows?
For example lets say I have empty matrix:
m = [];
and when I run the for loop, I get rows that I need to insert into matrix.
For example:
for i=1:5 row = v - x; % for example getting 1 2 3 % m.append(row)? end
so after inserting it should look something like:
m = [ 1 2 3 3 2 1 1 2 3 4 3 2 1 1 1 ]
In most programming languages you can simply append rows into array/matrix. But I find it hard to do it in matlab.
-
Cris Luengo over 5 yearsThere is a big difference between
m=[m,x]
andm(end+1,:)=x
when appending s column. See this answer. For rows, the difference maybe not as large, I haven’t compared, but it is certainly recommendable to append columns rather than rows, if preallocating a matrix of the right size is not possible. Appending columns can be done without copying data in many cases. -
Alfredo Rodriguez over 4 yearsI just used m = NaN(numRows,numCols); as definition outside prior to the loop and then m(row,:) = row; inside the loop. That was it. tks!