如何在 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,[])';
很抱歉这么简单的问题,但我还是会保留它,以防对其他人也有帮助。
我有一个大小为 [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,[])';
很抱歉这么简单的问题,但我还是会保留它,以防对其他人也有帮助。