【发布时间】:2020-05-13 04:23:06
【问题描述】:
我有一个 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
...
1 x 2 x 408
是另一个单独的矩阵;并为所有 32 个值继续此操作。 40 维也类似:
2 x 1 x 1(获取第一个维度的第二个值和第二个维度的第一个值)
2 x 1 x 2
2 x 1 x 3
...
2 x 1 x 408
等等。所以以这种方式(最后),我必须有 40 x 32 = 1280 个单独的 3d 矩阵,它们的第三维从 1 开始并以 408 结束。
Here is the google drive link for downloading my 3d Matrix
更多描述:
这个 3d 矩阵(纬度 x 经度 x 时间)属于名为 GPCC 的气候模型的网格降水。如您所见,它包含 408 个月的数据,涵盖我的案例研究的 1280 个点 (40 x 32)。我想将每个点都视为基于点的数据,并为它们生成 408 个月的数据。因此,每 1280 点拥有 408 个月的数据(假设是降水)。然后我可以在Standardized Drought Analysis Toolbox (SDAT) 中使用它们,这是一个第三方函数,由Amir Aghakouchak 教授在 Matlab 文件交换中提供,用于计算 SPI(标准化降水指数)。
【问题讨论】:
-
为什么不直接使用
mat(1,1,:)访问第一个矩阵(可能添加squeeze)?你想要得到什么形状的矩阵? -
亲爱的@beaker 谢谢你这是一个很好的提及。我应该使用 mat(1,1,:) 然后挤压。非常感谢。我想知道如何为此目的编写一个循环,因为我不是编码员,而且我是 Matlab 新手,不熟悉许多功能。
-
@beaker 我希望结果是一个单元格,其中包含所有输出作为第一行中的单独表格。我尝试为此编写一个 for 循环,但仍然无法编写正确的代码。无论如何,我很高兴,因为您提到了 mat(1,1,:) 和挤压。如果您能帮助编写 for-loop,我将不胜感激。
标签: matlab