【问题标题】:MATLAB submatrixMATLAB 子矩阵
【发布时间】:2013-04-16 20:08:11
【问题描述】:

MATLAB 问题:

我有一个三维数组 A(2,2,2)。我想定义一个2x2数组作为A的子数组,如下:

B = A(1,:,:)。

也就是说,我们只是在第一个组件上进行投影。但是 matlab 现在会将这个 2x2 矩阵视为 1x2x2 数组,所以我不能做某些事情(比如乘以另一个 2x2 矩阵)。

如何将 B 作为 A 的 2x2 子数组?

【问题讨论】:

    标签: matlab projection submatrix


    【解决方案1】:

    如果您想到一座摩天大楼,您的A(1,:,:) 将把一楼移出,而这个操作不可避免地会发生在第三维。

    您可以使用reshape()squeeze()permute() 来摆脱单例维度:

    reshape(A(1,:,:),2,2)
    squeeze(A(1,:,:))
    permute(A(1,:,:),[2,3,1])
    

    squeeze() 几乎可以自己完成所有工作,但它不是内置函数,实际上使用了reshape()。其他两个替代方案预计会更快。

    【讨论】:

    • 谢谢,正是我想要的。
    【解决方案2】:

    您想使用函数squeeze 来删除单件维度:

    B = squeeze(A(1,:,:))
    

    【讨论】:

      猜你喜欢
      • 2013-06-18
      • 2014-05-18
      • 1970-01-01
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多