行列を連結して新たな行列を作る方法

24 views (last 30 days)
Naoto Iwaki
Naoto Iwaki on 6 Nov 2019
Commented: Shunichi Kusano on 7 Nov 2019
サイズM×Nの行列AとサイズM×N行列Bからサイズ2M×Nの行列Cを作りたいです。
たたし行列Aの下にそのまま行列Bを連結するのではなく
行列Cの各要素が
「A(1,1:end); B(1,1:end); A(2,1:end); B(2,1:end); ....... A(M,1:end); B(M,1:end)]
になるようにfor文などでループをまわしたいのですがどう書けばいいですか。(Mがかなり大きいため)
例えば,
3×3サイズの行列A=[1 2 3; 7 8 9; 13 14 15]、 行列B=[4 5 6; 10 11 12; 16 17 18]から
6×3の行列C=[1 2 3; 4 5 6; 7 8 9; 10 11 12; 13 14 15;16 17 18]を作るといったようにしたいです。

Accepted Answer

Shunichi Kusano
Shunichi Kusano on 6 Nov 2019
行方向にAとBを交互にCに入力したいということですよね。例えば
C = zeros(2*M,N);
C(1:2:end,:) = A;
C(2:2:end,:) = B;
で実現出来ます。1:2:endは1から始まって終わりまで一個飛ばし、2:2:endは2から始まって終わりまで一個飛ばしという意味になります。
  2 Comments
Naoto Iwaki
Naoto Iwaki on 6 Nov 2019
ありがとうございます。
仰るとおりです助かりました。
Shunichi Kusano
Shunichi Kusano on 7 Nov 2019
問題解決に繋がってよかったです。
蛇足ですが、reshape使う方法もあります。上の例ですと
C = reshape([A,B]', [N 2*M])';
今後のご参考までです。

Sign in to comment.

More Answers (0)

Categories

Find more on 行列および配列 in Help Center and File Exchange

Products


Release

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!