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

サイズ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에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

제품

릴리스

R2019b

태그

질문:

2019년 11월 6일

댓글:

2019년 11월 7일

Community Treasure Hunt

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

Start Hunting!