我有一个大小为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
...]
答案 0 :(得分:2)
我找到了解决方案。它就像转置,重塑和再转置一样简单。
因此,对于我的例子,解决方案是:
X2 = reshape(X',3,[])';
对于这么简单的问题感到抱歉,但我仍然会保留它,以防它也帮助其他人。