0

私は次のような2Dマトリックスを持っていますA:

  A = [ 1 2 3 4 5 6;
    7 8 9 10 11 12;
    1 2 3 4 5 6;
    7 8 9 10 11 12;]

次のように、この 2D マトリックスBをサイズ 2X3X4の 3D マトリックスに変換します。

B(:,:,1) = [1 2 3; 7 8 9];
B(:,:,2) = [1 2 3; 7 8 9];
B(:,:,3) = [4 5 6; 10 11 12];
B(:,:,4) = [4 5 6; 10 11 12];

今私がやっていることは、最初にこの 2D MatrixAを cell タイプCに変換してからmat2cell、それを使用catして 3D Matrix を変換するBことですが、このセルはまったく必要ないため、複雑すぎCます。

直接かつエレガントに変身Aする方法について何かアドバイスをもらえますか?B

ありがとう!

4

1 に答える 1

2

あなたはこのようなことをすることができます -

[m,n] = size(A);
nr = 2; % Number of rows in o/p
nc = 3; % Number of cols in o/p
out = reshape(permute(reshape(A,nr,m/nr,nc,[]),[1,3,2,4]),nr,nc,[]);
于 2016-09-11T14:01:51.110 に答える