如何在MATLAB中划分矩阵列?

时间:2015-11-07 14:36:42

标签: matlab matrix reshape

我有一个大小为X的矩阵[N, D1],我想获得一个新的矩阵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
            ...]

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。它就像转置,重塑和再转置一样简单。

因此,对于我的例子,解决方案是:

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

对于这么简单的问题感到抱歉,但我仍然会保留它,以防它也帮助其他人。