2013-12-15 59 views
7

如何在matlab中我可以交互追加矩阵行?Matlab - 迭代插入/追加行到矩阵

例如可以说我有空矩阵:

m = []; 

,当我运行的循环,我得到我需要插入到矩阵行。

例如:

for i=1:5 
    row = v - x; % for example getting 1 2 3 
    % m.append(row)? 
end 

所以插入它应该看起来像后:

m = [ 
    1 2 3 
    3 2 1 
    1 2 3 
    4 3 2 
    1 1 1 
] 

在大多数编程语言中,你可以简单地追加行到数组/矩阵。但是我发现在matlab中很难做到这一点。

回答

16

m = [m ; new_row];在你的循环中。如果您知道总行号,请定义m=zeros(row_num,column_num);,然后在您的循环中m(i,:) = new_row;

+0

你非常欢迎! – lennon310

2

只需使用

m = [m; row]; 

要考虑到延伸的矩阵是缓慢的,因为它涉及到内存重新分配。这是更好地矩阵预分配给它的全尺寸,

m = NaN(numRows,numCols); 

,然后在每次迭代填补了行值:

m(ii,:) = row; 

此外,最好not to usei作为变量名,因为默认情况下它代表虚数单位(这就是为什么我在这里使用ii作为迭代指数)。

0

要在矩阵中创建并添加一个值,您可以执行此操作,并且可以制作一个完整的矩阵,如您的矩阵。 这里行= 5然后列= 3并因此两个for循环。

放入M(i, j)位置的值,它会在矩阵

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) 

可证,如果你输入给出的值时,输出会像你插入值,

Full Matrix is = 
1 2 3 
3 2 1 
1 2 3 
4 3 2 
1 1 1