【问题标题】:How do I get the two last dimensions of an N-D array as a 2D array?如何将 N-D 数组的最后两个维度作为 2D 数组?
【发布时间】:2023-04-07 19:51:01
【问题描述】:

我在 MATLAB 中有一个 3D 数组,带有 size(myArray) = [100 100 50]。现在,我想得到一个特定的层,由 first 维度中的索引指定,以二维矩阵的形式。 我试过myMatrix = myArray(myIndex,:,:);,但这给了我一个带有size(myMatrix) = [1 100 50]的3D数组。

如何告诉 MATLAB 我对第一个维度不感兴趣(因为只有一层),所以它可以简化矩阵?

注意:我还需要对第二个索引执行此操作,渲染 size(myMatrix) = [100 1 50] 而不是所需的 [100 50]。解决方案应该适用于这两种情况,最好也适用于三维。

【问题讨论】:

    标签: arrays matlab multidimensional-array matrix n-dimensional


    【解决方案1】:

    使用squeeze 函数,该函数会删除单一维度。

    示例:

    A=randn(4,50,100);
    B=squeeze(A(1,:,:));
    size(B)
    
    ans =
    
        50   100
    

    这是通用的,您不必担心要索引的维度。所有单例维度都被挤出。

    【讨论】:

      【解决方案2】:
      reshape(myArray(myIndex,:,:),[100,50])
      

      【讨论】:

        【解决方案3】:

        squeezereshapepermute 可能是处理 N-D 矩阵时最重要的三个函数。举个例子如何使用第三个功能:

        A=randn(4,50,100);
        B=permute(A(1,:,:),[2,3,1])
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-09-18
          • 2022-01-20
          • 2021-08-29
          • 2021-04-16
          • 2020-05-15
          • 2019-08-21
          相关资源
          最近更新 更多