Matlab - 迭代地将行插入/追加到矩阵中

时间:2013-12-15 20:15:06

标签: matlab for-loop matrix insert rows

如何在matlab中以交互方式在行中附加矩阵?

例如,假设我有空矩阵:

m = [];

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

例如:

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中很难做到这一点。

3 个答案:

答案 0 :(得分:17)

循环中

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

答案 1 :(得分:2)

只需使用

m = [m; row];

考虑到扩展矩阵很慢,因为它涉及内存重新分配。最好将矩阵预分配到其完整大小,

m = NaN(numRows,numCols);

然后在每次迭代时填充行值:

m(ii,:) = row;

此外,作为变量名称更好not to use i,因为默认情况下它代表虚构单位(这就是我在这里使用ii作为迭代索引的原因)。

答案 2 :(得分: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