【问题标题】:Delete Empty Matrices in Multidimensional Array - MATLAB删除多维数组中的空矩阵 ​​- MATLAB
【发布时间】:2014-03-15 19:15:56
【问题描述】:

我正在寻找一种在 MATLAB 中删除多维数组中的空矩阵的方法。

例如,我有一个 4-D 数组,例如:

N = 5;
Arr = zeros(2,2,4,N);

假设只有 N = 2 和 N = 4 有值(即 N = 1、3 和 5 中的四个 2x2 矩阵为零),如何创建另一个多维数组 ArrFin(2,2,4,2)这样

ArrFin(2,2,4,1) = Arr(2,2,4,2); 
ArrFin(2,2,4,2) = Arr(2,2,4,4); 

我试图让这个问题很笼统,以便其他人也可以从中受益,但如果我没有多大意义,请告诉我。

提前致谢:)

【问题讨论】:

    标签: matlab multidimensional-array


    【解决方案1】:

    想出了一个非常巧妙的方法:

    ArrFin = Arr(:,:,:,any(any(any(Arr,3))));
    

    这会挑选出非零矩阵并将它们保存到 ArrFin。

    【讨论】:

      【解决方案2】:

      代码

      %%// Create data
      Arr= rand(2,2,4,5);
      Arr(:,:,:,[1 3 5]) = 0;
      
      %%// Get new reduced matrix and check for its size
      ArrFin = Arr(:,:,:,find(sum(reshape(sum(Arr,3),size(Arr,3),size(Arr,4)),1)));
      size_check  = size(ArrFin)
      

      输出

      size_check =
      
           2     2     4     2
      

      【讨论】:

        猜你喜欢
        • 2015-03-10
        • 2014-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多