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 - 迭代地将行插入/追加到矩阵中的主要内容,如果未能解决你的问题,请参考以下文章