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

17 Ansichten (letzte 30 Tage)
Naoto Iwaki
Naoto Iwaki am 6 Nov. 2019
Kommentiert: Shunichi Kusano am 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]を作るといったようにしたいです。

Akzeptierte Antwort

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu 行列および配列 finden Sie in Help Center und File Exchange

Produkte


Version

R2019b

Community Treasure Hunt

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

Start Hunting!