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

Ner*_*ona -1 matlab matrix

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

Lui*_*ndo 6

您可以将其定义为空:

matrix = [];
Run Code Online (Sandbox Code Playgroud)

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

matrix = [matrix; newSubMatrix];
matrix = [matrix, newSubMatrix];
Run Code Online (Sandbox Code Playgroud)

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

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

matrix = zeros(M,N);
Run Code Online (Sandbox Code Playgroud)

然后填充以下元素:

matrix(m,n) = exampleEntry;
matrix(m,:) = exampleRow;
matrix(:,n) = exampleCol;
Run Code Online (Sandbox Code Playgroud)

这样,只有当mn大于M并且NMatlab需要放大矩阵时.