【问题标题】:Matlab: Extract LxN array from LxMxN arrayMatlab:从 LxMxN 数组中提取 LxN 数组
【发布时间】:2020-07-15 00:28:36
【问题描述】:

假设x=zeros(L,M,N)。对于一个固定的组件,剩下的数组基本上是一个矩阵。所以我应该能够做类似y = x(:,2,:) 的事情。然后,我希望 y 是一个矩阵,即一个 LxN 数组。但我得到了一个 Lx1xN 数组。

固定一个组件后,如何从三维数组中获取标准矩阵?我用matlab。

【问题讨论】:

    标签: arrays matlab multidimensional-array resize size


    【解决方案1】:

    索引后使用permute重新排列维度:

    x = zeros(2,3,4); % L×M×N
    y = permute(x(:,2,:), [1 3 2]); % move 2nd dimension to 3rd
    

    代码将第二个维度发送到末尾。这会将L×1×N 数组转换为L×N×1 数组,与L×N 数组相同矩阵,因为尾随单例维度are ignored;事实上,数组可以被认为有一个infinite number 的尾随单例维度。作为检查,

    >> size(y)
    ans =
         2     4
    

    提醒一句:有些人可能会倾向于使用更简单的y = squeeze(x(:,2,:)),但这会压缩所有(非尾随)单例维度,而不仅仅是第二个维度,因此它给出了一个错误L=1的结果。

    【讨论】:

      【解决方案2】:

      你可以使用reshape:

      y = reshape(x(:,2,:), [L N]); 
      

      【讨论】:

        猜你喜欢
        • 2019-02-21
        • 1970-01-01
        • 2016-05-15
        • 2015-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-15
        • 1970-01-01
        相关资源
        最近更新 更多