Matlab 如何将3d矩阵拆分为子2d矩阵?
我有一个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结束 更多说明: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矩阵(纬度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,:)和挤压。如果您能为我写一封信,我将不胜感激。