サイズ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]を作るといったようにしたいです。

 採用された回答

Shunichi Kusano
Shunichi Kusano 2019 年 11 月 6 日

3 投票

行方向に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 件のコメント

Naoto Iwaki
Naoto Iwaki 2019 年 11 月 6 日
ありがとうございます。
仰るとおりです助かりました。
Shunichi Kusano
Shunichi Kusano 2019 年 11 月 7 日
問題解決に繋がってよかったです。
蛇足ですが、reshape使う方法もあります。上の例ですと
C = reshape([A,B]', [N 2*M])';
今後のご参考までです。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File Exchange で Operating on Diagonal Matrices についてさらに検索

製品

リリース

R2019b

タグ

Community Treasure Hunt

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

Start Hunting!