0

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

请注意,目前,我只声明了两个维度,但没有声明第三个维度,所以我会收到这样的错误:

尝试访问 bins(1,2,2);索引超出范围,因为 size(bins)=[2,22,1]。

但问题是,Xk 维度是可变的,我真的无法决定如何需要它。无论如何要声明一个可变矩阵?

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

1 回答 1

4

您可以使用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 会自动用零填充中间值。然而,在循环中调整数组的大小并不是一个好的编程方法。你可能想重新考虑你的方法,这样你就不会这样做了。

于 2013-02-04T03:54:44.117 回答