1

私は2つの行列を持っています

a = randi ([0 10], 5, 6)
b = randi ([0 10], 2, 45)

ここで、aとbのすべての要素を使用してサイズ8x15の行列cを作成します。1行のコードでそれを行うことは可能ですか?いくつかの提案をお願いします。

これが私がやろうとしていることの例です:

a = [1 4 6;
     5 8 0;
     3 7 9;
     4 10 5];

b = [5 6;
     5 0];

c = [1 4 6 5;
     8 0 3 7;
     9 4 10 5;
     5 6 5 0]
4

1 に答える 1

1

組み合わせる方法の仕様が明確ではaありbません。これを行う1つの方法があります。

aおよびから構築された単一の列ベクトルを作成しますb。次にreshape、その列ベクトルを行列に入れます。

c = reshape( [ a(:); b(:) ], 8, 15);

これは、の要素の総数と等しい場合にのみ機能します。numel(a) + numel(b)c

マトリックスを作成するのに十分な要素を提供していないため、実行の試みc = reshape( [ a(:); b(:) ], 7,12);失敗します。7x12

この回答に関するNoufalのコメントを更新すると、問題の要件が少し変わります。基本的には列ベクトルを作成しますが、自由に使用できる要素の数に応じてCにのみ入力します。

A = rand(5,6);
B = rand(2,45);
C = zeros(8,10);

tmp = [A(:); B(:)]; % create temporary column vector

maxIdx = min( [numel(tmp), numel(C)] ); % determine if tmp or C has fewer elements

C(1:maxIdx) = tmp(1:maxIdx); % fill C from tmp using indices 1:maxIdx
于 2013-01-16T17:11:18.487 に答える