【问题标题】:Need some help understanding the MATLAB `cat` command in high dimensions需要一些帮助来理解高维的 MATLAB `cat` 命令
【发布时间】: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


    【解决方案1】:

    ab 都是大小为 3×3 的二维矩阵。当您沿第四维连接它们时,中间的第三维是单例(即 1)。所以c(:,:,1,1) 将是您的矩阵ac(:,:,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 来明确显示第三维仍然存在。

    【讨论】:

    • 还是太抽象了,看不懂,猫走3维好像容易多了?你能详细说明When you concatenate them along a fourth dimension, the intervening third dimension is singleton 的意思吗?
    • @Runner:我试图给出一个更直观的四维数据示例。我希望它现在不那么抽象了。
    猜你喜欢
    • 1970-01-01
    • 2012-02-17
    • 2012-02-10
    • 2012-02-02
    • 2016-02-10
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 2020-08-06
    相关资源
    最近更新 更多