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

Posted

技术标签:

【中文标题】Matlab - 迭代地将行插入/追加到矩阵中【英文标题】:Matlab - insert/append rows into matrix iteratively 【发布时间】:2014-01-03 03:43:54 【问题描述】:

如何在 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中很难做到。

【问题讨论】:

【参考方案1】:

随便用

m = [m; row];

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

m = NaN(numRows,numCols);

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

m(ii,:) = row;

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

【讨论】:

我刚刚使用了 m = NaN(numRows,numCols);作为循环之前的定义,然后是 m(row,:) = row;循环内。就是这样。 tks!【参考方案2】:

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

【讨论】:

m=[m,x]m(end+1,:)=x 在追加 s 列时有很大的不同。见this answer。对于行,差异可能没有那么大,我没有比较过,但如果无法预先分配正确大小的矩阵,当然建议追加列而不是行。在许多情况下,可以在不复制数据的情况下追加列。【参考方案3】:

要创建一个值并将其添加到矩阵中,您可以这样做,并且可以制作一个像您这样的完整矩阵。 这里 row = 5 然后是 column = 3 和 for 因此两个 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

【讨论】:

以上是关于Matlab - 迭代地将行插入/追加到矩阵中的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB:在矩阵中插入不同数量的 NaN

MATLAB:附加到预先分配的矩阵

我可以动态地将计算属性插入到 Vue 组件中吗

matlab中如何给已有矩阵插入一行或一列值

为啥这个 DataAdapter 不会将行插入到数据库中?

从 viewdidload 将行插入到 tableview