Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Matlab - insert/append rows into matrix iteratively

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.

like image 390
Andrius Avatar asked Dec 15 '13 20:12

Andrius


3 Answers

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
like image 196
Maniruzzaman Akash Avatar answered Nov 11 '22 04:11

Maniruzzaman Akash


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;

like image 36
lennon310 Avatar answered Nov 11 '22 05:11

lennon310


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).

like image 3
Luis Mendo Avatar answered Nov 11 '22 04:11

Luis Mendo