我想在MATLAB中初始化一个矩阵并用循环添加它。我不确定开始时应该有多大,但我希望能够根据需要添加任意数量的子矩阵。
答案 0 :(得分:6)
您可以将其定义为空:
matrix = [];
然后追加行,列或子矩阵:
matrix = [matrix; newSubMatrix];
matrix = [matrix, newSubMatrix];
但是,以这种方式扩大矩阵会导致Matlab重新分配内存。如果在每次循环迭代时发生这种情况,您的代码将会很慢。
更好的方法是初始化为近似大小:
matrix = zeros(M,N);
然后填写以下元素:
matrix(m,n) = exampleEntry;
matrix(m,:) = exampleRow;
matrix(:,n) = exampleCol;
这样,只有当m
或n
大于M
且N
时,Matlab才需要放大矩阵。
答案 1 :(得分:1)
我建议初始化一个更大的矩阵:
x=nan(n,m)
添加数据后,将其剪切:
[a,b]=ind2sub(size(x),find(~isnan(x),1,'last'))
x=x(1:a,1:b)
这假设您不在数据中使用nan。