Matlab 如何将3d矩阵拆分为子2d矩阵?

Matlab 如何将3d矩阵拆分为子2d矩阵?,matlab,Matlab,我有一个3d矩阵(40 x 32 x 408)。我想将其拆分为单独的矩阵,如下所示: 1 x 1 x 1(获取第一个尺寸的第一个值和第二个尺寸的第一个值,第三个尺寸的第一个值) 1 x 1 x 2(获取第一个尺寸的第一个值和第二个尺寸的第一个值,第三个尺寸的第二个值) 1 x 1 x 3(获取第一个尺寸的第一个值和第二个尺寸的第一个值,第三个尺寸的第三个值) 1 x 1*408 可以是一个单独的3d矩阵 然后: 1 x 2 x 1(获取第一个维度的第一个值和第二个维度的第二个值) 1 x 2

我有一个3d矩阵(40 x 32 x 408)。我想将其拆分为单独的矩阵,如下所示:

1 x 1 x 1(获取第一个尺寸的第一个值和第二个尺寸的第一个值,第三个尺寸的第一个值)

1 x 1 x 2(获取第一个尺寸的第一个值和第二个尺寸的第一个值,第三个尺寸的第二个值)

1 x 1 x 3(获取第一个尺寸的第一个值和第二个尺寸的第一个值,第三个尺寸的第三个值)

1 x 1*408

可以是一个单独的3d矩阵

然后:

1 x 2 x 1(获取第一个维度的第一个值和第二个维度的第二个值)

1 x 2 x 2

1 x 2 x 3

1x2x408

是另一个单独的矩阵;并对所有32个值继续此操作。40个尺寸也类似:

2 x 1 x 1(获取第一个维度的第二个值和第二个维度的第一个值)

2x1x2

2 x 1 x 3

2 x 1 x 408

等等。这样的话(在最后),我必须有40x32=1280个独立的3d矩阵,它们的第三维度都从1开始,到408结束

更多说明:


该3d矩阵(纬度x经度x时间)属于一个名为GPCC的气候模型的网格降水。正如你所看到的,它包含了408个月的数据,涵盖了我的案例研究的1280点(40 x 32)。我想把每一点都看作是基于点的数据,并为它们生成408个月的数据。因此,每1280个点都有408个月的自有数据(降水量)。然后我可以在中使用它们,这是一个第三方函数,由教授在Matlab文件交换中提供,用于计算SPI(标准化降水指数)。

您描述的是参数
dim
3
时的行为

C = num2cell(A,3)

将每个单元格中包含一个40×32矩阵的单元格数组分配给
C
,其中
a
是原始3D矩阵的名称。

为什么不直接使用
mat(1,1,:)
访问第一个矩阵(可能会添加
压缩
)?你想要得到什么形状的矩阵?亲爱的@bicker谢谢这是一个很好的例子。我应该用垫子(1,1,:)然后挤压。非常感谢。我想知道如何为此编写一个循环,因为我不是编码员,而且我是Matlab新手,对很多函数都不熟悉。@bicker我希望结果是一个单元格,在第一行中包含作为单独表格的所有输出。我试图为此编写一个for循环,但仍然无法编写正确的代码。无论如何,我很高兴,因为你提到了垫子(1,1,:)和挤压。如果您能为我写一封信,我将不胜感激。