我应该如何逐步将结果添加到矩阵中?

时间:2013-12-02 16:38:35

标签: matlab matrix

我想在MATLAB中初始化一个矩阵并用循环添加它。我不确定开始时应该有多大,但我希望能够根据需要添加任意数量的子矩阵。

2 个答案:

答案 0 :(得分:6)

您可以将其定义为空:

matrix = [];

然后追加行,列或子矩阵:

matrix = [matrix; newSubMatrix];
matrix = [matrix, newSubMatrix];

但是,以这种方式扩大矩阵会导致Matlab重新分配内存。如果在每次循环迭代时发生这种情况,您的代码将会很慢。

更好的方法是初始化为近似大小:

matrix = zeros(M,N);

然后填写以下元素:

matrix(m,n) = exampleEntry;
matrix(m,:) = exampleRow;
matrix(:,n) = exampleCol;

这样,只有当mn大于MN时,Matlab才需要放大矩阵。

答案 1 :(得分:1)

我建议初始化一个更大的矩阵:

x=nan(n,m)

添加数据后,将其剪切:

[a,b]=ind2sub(size(x),find(~isnan(x),1,'last'))
x=x(1:a,1:b)

这假设您不在数据中使用nan。