MATLAB:如何动态增加矩阵的一列长度

MATLAB:如何动态增加矩阵的一列长度,matlab,matrix,Matlab,Matrix,我像这样声明了一个三维矩阵,在迭代的后期,我需要动态扩展第三维的长度 请注意,目前我只声明了二维,而没有声明第三维,因此我将得到如下错误: 试图访问垃圾箱(1,2,2);索引超出范围,因为 大小(料仓)=[2,22,1] 但问题是,Xk维度是可变的,我真的无法决定如何需要它。是否有声明可变矩阵的方法 bins=zeros(2,size(Xtrain,2)); %Some for loop bins(Y,k,Xk)=bins(Y,k,Xk)+1; %end loop 您可以使用end+k

我像这样声明了一个三维矩阵,在迭代的后期,我需要动态扩展第三维的长度

请注意,目前我只声明了二维,而没有声明第三维,因此我将得到如下错误:

试图访问垃圾箱(1,2,2);索引超出范围,因为 大小(料仓)=[2,22,1]

但问题是,Xk维度是可变的,我真的无法决定如何需要它。是否有声明可变矩阵的方法

bins=zeros(2,size(Xtrain,2));
%Some for loop
    bins(Y,k,Xk)=bins(Y,k,Xk)+1;
%end loop

您可以使用
end+k
符号动态扩展矩阵,如下所示:

A = zeros(10,10,10);
size(A) %[10 10 10]
Xk = 5;
A(:,:,end+Xk) = 4;
size(A) %[10 10 15]

A
的大小将自动增加,Matlab将自动在值之间填充零。然而,调整循环内数组的大小并不是一种好的编程方法。您可能需要重新考虑您的方法,这样您就不会这样做。

您可以使用
end+k
符号动态扩展矩阵,如下所示:

A = zeros(10,10,10);
size(A) %[10 10 10]
Xk = 5;
A(:,:,end+Xk) = 4;
size(A) %[10 10 15]
A
的大小将自动增加,Matlab将自动在值之间填充零。然而,调整循环内数组的大小并不是一种好的编程方法。你可能想重新考虑你的方法,这样你就不会这么做了