【发布时间】:2010-04-09 17:21:15
【问题描述】:
命令
a = magic(3);
b = pascal(3);
c = cat(4,a,b);
生成一个 3×3×1×2 数组。
为什么维度为4时结果为3-3-1-2?
【问题讨论】:
标签: matlab syntax multidimensional-array cat
命令
a = magic(3);
b = pascal(3);
c = cat(4,a,b);
生成一个 3×3×1×2 数组。
为什么维度为4时结果为3-3-1-2?
【问题讨论】:
标签: matlab syntax multidimensional-array cat
a 和 b 都是大小为 3×3 的二维矩阵。当您沿第四维连接它们时,中间的第三维是单例(即 1)。所以c(:,:,1,1) 将是您的矩阵a 和c(:,:,1,2) 将是您的矩阵b。
这里是a link to some documentation,可能有助于理解多维数组。
编辑:
也许用我们人类更容易与之相关的术语来思考这四个维度……
假设示例中的四个维度表示空间中的三个维度(x、y 和 z)加上第四个维度时间。想象一下,我在给定时间对空间中多个点的空气温度进行采样。我可以在包含三个x 位置、三个y 位置和一个z 位置的所有组合的网格中对空气温度进行采样。这会给我一个 3×3×1 的网格。通常,我们可能只是说数据在 3×3 网格中,忽略尾随单例维度。
但是,假设我现在稍后在这些点采集另一组样本。因此,我在第二个时间点获得了另一个 3×3×1 网格。如果我将这些数据集沿时间维度连接在一起,我将得到一个 3×3×1×2 矩阵。第三个维度是单例,因为我只采样了一个 z 值。
因此,在示例c=cat(4,a,b) 中,我们沿第四维连接两个矩阵。这两个矩阵是 3×3,隐含地假定第三维是单例的。然而,当沿第四维连接时,我们最终不得不通过将其大小列为 1 来明确显示第三维仍然存在。
【讨论】:
When you concatenate them along a fourth dimension, the intervening third dimension is singleton 的意思吗?