Matlab:我可以创建一个维数未知的矩阵吗?

Matlab: Can I create a matrix with unknown number of dimensions?

通常矩阵有 2 个维度,但在 MATLAB 中似乎没有限制矩阵可能具有的维度数。

创建一个4维矩阵,例如,我可以这样做:

>> x = zeros(2,2,2,2)

x(:,:,1,1) =

     0     0
     0     0


x(:,:,2,1) =

     0     0
     0     0


x(:,:,1,2) =

     0     0
     0     0


x(:,:,2,2) =

     0     0
     0     0

有没有办法创建一个只有运行时才知道维数的矩阵?

您可以这样调用 zeros

x = zeros([2 2 2 2])

因此,您可以根据需要自定义输入数组。

例如:创建一个2x2x2x2x2的矩阵(其中D=5,维数):

D = 5;
x = zeros(zeros(1, D) + 2)

Rafael 的回答一针见血。但是也有一种通用的方法来做这种事情,即使函数没有像 zeros 那样的矢量输入之类的东西的重载。您可以像这样使用 cell 数组:

>> dims = {2,2,2,2};
>> zeros(dims{:})
ans(:,:,1,1) =

     0     0
     0     0


ans(:,:,2,1) =

     0     0
     0     0


ans(:,:,1,2) =

     0     0
     0     0


ans(:,:,2,2) =

     0     0
     0     0

我发现这种方法对其他功能非常有用。

编辑:

这种方法更可靠。这是另一个例子:

imginfo = { rand(40), [0 1], 'Colormap', colormap(jet) };
figure, imshow(a{:});