需要一些帮助来理解高维度的MATLAB`cat`命令

时间:2010-04-09 17:21:15

标签: matlab syntax multidimensional-array cat

命令

a = magic(3);
b = pascal(3); 
c = cat(4,a,b);

产生一个3乘3乘1的阵列。

为什么维度为3-3-1-2时的结果为4

1 个答案:

答案 0 :(得分:1)

ab都是大小为3乘3的二维矩阵。当你沿着第四维连接它们时,插入的第三维是单例(即1)。因此c(:,:,1,1)将是您的矩阵a,而c(:,:,1,2)将是您的矩阵b

这里的a link to some documentation可能有助于理解多维数组。

修改

也许这将有助于以人类可以更容易地与...相关的术语来考虑这四个维度。

我们假设示例中的四个维度表示空间中的三个维度(xyz)加上第四维时间。想象一下,我在一个给定时间在空间中的多个点处对空气中的温度进行采样。我可以在网格中对气温进行采样,该网格包含三个x位置,三个y位置和一个z位置的所有组合。这将给我一个3乘3乘1的网格。通常情况下,我们可能只是说数据是在3乘3的网格中,而忽略了尾随的单例维度。

然而,让我们说我现在在以后的这些点采集另一组样本。因此,我在第二个时间点获得另一个3乘3乘1的网格。如果我沿着时间维度连接这些数据集,我得到一个3乘3乘1乘2矩阵。第三个维度是单例,因为我只采用一个z值进行采样。

因此,在示例c=cat(4,a,b)中,我们沿着第四维连接两个矩阵。两个矩阵是3乘3,第三维隐含地假设为单身。但是,当沿着第四维连接时,我们最终必须通过将其大小列为1来明确地显示第三维仍然存在。