10

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.

3 Answers 3

19

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;

Sign up to request clarification or add additional context in comments.

1 Comment

There is a big difference between m=[m,x] and m(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.
3

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

1 Comment

I 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!
1

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.