2016-10-27 1 views
1

私は空き時間があるので、私はmatlabを学んでいます。 行列Bは行列Cの半分の長さです 行列Bの最初の列のすべての値に、行列Cの最初の列の他のすべての値を代入します forループを使用してこれを行うには。現在、行列Bの列にある最後の数値が他の値に代入されます。変更する必要はありますか?ここでrep行列を使って列内の他の値を取り込む

reps = 2; 
delta = zeros(reps,1); 
B = magic(5); 
C = kron(B,delta); 

が毎秒値がBから取られるべきであることを示しています

Z=length(A); 
X = length(B); 
C = zeros(size(A); 
for n = 1:2:Z 
    for m = 1:1:X    
     C(n,1) = B(m,1); 
    end 
end 

答えて

0

あなたはkron機能を使用することができます。しかし、delta = ones(reps,1);、または興味のあるミックスを使用して値を複製することもできます。deltaを変更します。

さらに、deltaの次元を行ベクトルに変更し、行に沿って値を複製することができます。または、deltaをマトリックスにすることで、もっと上品なものを得ることができます。

+0

私はこれは私が望んでいたと私に移入するためにそれを使用することにより、ラインの下のステップを保存したものと動作するようになりました2列目。私はforループを使用して、他のすべての値に0を代入して、私が望むものを達成しました。私にこれを見せてくれてありがとう! – Swagnon

+0

これを行うと、forループを使用する必要はありません。これらの値をゼロにしたくない場合でも、後で 'C(C == 0)= NewValue;'を変更することができます。 – mpaskov

0

あなたは、単にこの書くことができます。

B = magic(4); % The small matrix with the values 
C = zeros(size(A)*2); % The matrix to fill the values in 
C(1:2:end,1) = B(:,1) % populating the matrix 

をし、あなたが得る:

C = 
    16  0  0  0  0  0  0  0 
    0  0  0  0  0  0  0  0 
    5  0  0  0  0  0  0  0 
    0  0  0  0  0  0  0  0 
    9  0  0  0  0  0  0  0 
    0  0  0  0  0  0  0  0 
    4  0  0  0  0  0  0  0 
    0  0  0  0  0  0  0  0 
関連する問題