【问题标题】:How to divide columns of matrix in MATLAB?如何在MATLAB中划分矩阵的列?
【发布时间】:2015-11-07 14:36:41
【问题描述】:

我有一个大小为[N, D1] 的矩阵X,我想获得一个新的矩阵X2 [N2, D2],其中的输出X2 应如下所示:

f(X,D2) = X2 =

[ part 1 of X(1,:)   === X(1, 1 : D2)
  part 2 of X(1,:)   === X(1, D2+1 : 2*D2) , etc
  ...
  part K of X(1,:)
  part 1 of X(2,:)
  ...
  ...
  part K of X(N,:) ]

所以D2 将提供mod(D1,D2)=0; 因此N2 = N * D1/D2

我无法让reshape 用于此目的。也许我可以用 for 循环来做到这一点,但我想知道是否有一种矢量化/有效的方法。

感谢您的帮助!

示例输入

X = [1, 2, 3, 4,  5,  6
     7, 8, 9, 10, 11, 12]

其中有 6 列,所以我想将它分成 3 列:

f(X,3) = [1,2,3
          4,5,6
          7,8,9
            ...]

【问题讨论】:

  • 我建议在您的问题中添加一个简单的数字示例(输入和期望的输出),以确保每个人都能准确理解您的问题。
  • @Hoki 好建议,现在就做 :)

标签: matlab matrix reshape


【解决方案1】:

我找到了解决方案。就像转置、重塑然后再次转置一样简单。

所以对于我的例子,解决方案是:

X2 = reshape(X',3,[])';

抱歉这么简单的问题,但我还是会保留它以防它也对其他人有所帮助。

【讨论】:

  • 干得好!你可以接受你自己的答案来关闭话题。
  • 谢谢 :) 是的,我试过了,但它说“你可以在 2 天内接受你的答案”。所以我们等待..
猜你喜欢
  • 2011-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-09
  • 1970-01-01
相关资源
最近更新 更多