如何在 MATLAB 中划分矩阵的列?

How to divide columns of matrix in MATLAB?

我有一个大小为 [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
            ...]

我找到了解决方案。就像移调、整形然后再次移调一样简单。

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

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

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