2016-08-03 5 views
2

における別のマトリックスの行サイズに応じて列の行列を再形成します。しかし、第2の列行列の行数が常にPどのように第1のマトリックスに添加されなければならない他のカラムマトリックス<code>Q</code>を持ち</p> <pre><code>P = [1;2]; </code></pre> <p>を次のように私は1つの列のマトリックスを有するMATLAB

Q = [4;5;6]; 

のそれよりもある私は、分割またはPの大きさに応じてQ再構築したいと思います。 Pのサイズがnである場合、出力の最初の列はP

に過ぎないが、その後Qの最初n要素は、私は以下のように出力を必要とするが、私はできない出力の第2列および第三coulmnに残りの要素に入ります両方の行列のサイズが変わる可能性があるため、私は両方の行列のサイズがわからないので、変形を使用してください。

output = [1 4 6;2 5 0]; 

誰かが私を助けることができますか?

おかげ

+0

どうしてですか?サイズが奇数のときはゼロで埋め込み、サイズが2列しかできない場合にはそれを埋めず、その後は単に「変形」します。 – GameOfThrows

+1

行列のサイズが変わる場合は、最後にゼロを追加して 'Q'の行列のサイズを' P'のサイズの倍数にする必要があります。その後、あなたは安全に形を変えることができます。 –

+1

あなたはそれが望ましい出力ですか? – rayryeng

答えて

2

あなたはコミュニケーションツールボックスを持っている場合は、使用vec2mat

result = vec2mat([P(:); Q(:)], numel(P)).'; 
+0

@SembeiNorimakiヘッドアップありがとう。今修正されました –

2
% first we fill Q with appropiate number of zeros 
% (basically we see how many times Q is bigger than P rounded up) 
new_Q = zeros(numel(P)*ceil(numel(Q)/numel(P)), 1); 
new_Q(1:numel(Q)) = Q; 

% then we create a new matrix containing `P` and the reshaped `new_Q` 

R = [P reshape(new_Q, [numel(P), numel(new_Q)/numel(P)])] 

R = 

    1  4  6 
    2  5  0 

彼らは両方とも最初はベクトル(ではない行列)されている場合、これはPQの任意のサイズのために動作します

2

reshapeステートメント自体に必要な数のゼロを追加することもできます。 gを単一行で解答

R = [P reshape([Q; zeros(numel(P) - mod(numel(Q),numel(P)),1)],numel(P),[])] 
関連する問題

 関連する問題