2016-10-08 6 views
1

の平均を計算Iは4×4行列を有する:ストア・ループのための形態をもたらすベクターおよびすべてのこれらのベクター

A=[rand(1) 2 -1 rand(1); 
    rand(1) 3 rand(1) 0; 
    rand(1) -5 -2 5; 
    9 0 0 rand(1)]; 

今はの最初の列であるとベクトルbを形成したいとマトリックスA。だから、ベクトルbは、私は何度も100はその後、行列Cでこれらのベクトルを格納し(今4×100のサイズを有する)と、その後の平均値を計算すると言うBを計算forループを書きたい

b=[rand(1) 
    rand(1) 
    rand(1) 
    9 ]; 

ですすべての列はCです。これまでのところ、私は書いた:

for j=1:100 
    A=[rand(1) 2 -1 rand(1);... 
     rand(1) 3 rand(1) 0;... 
     rand(1) -5 -2 5;... 
     9 0 0 rand(1)]; 
    b=A(:,1) 
end 

ループが実行するたびに、それはベクトルを生成し、その後、b_1b_2,....,b_100を言います。行列C=[b_1 b_2 ... b_100]にそれらを格納する方法と、すべての列にわたって平均値がと同じサイズのベクトル4であるように、行列Cの平均を計算します。

+0

答えにコードを使用してみてください、あなたが望むように動作するかどうかをお知らせください。他の問題を修正しようとする可能性があります。 – Leos313

答えて

1

私はこのノートPC上でMATLABを持っていませんが、小さなスクリプトは次のようにする必要があります:

for jj=1:100 
C(:,jj)=[rand(1) ;... 
    rand(1) ;... 
    rand(1) ;... 
    9 ]; 
end 

行列Cは、すべての列ベクトルbが含まれています。それらのいずれかにアクセスするには、b(:,x)を使用してください。ここで、xは、使用するインデックス番号または列です。 あなたはこのような何かを行うことができます平均の場合:もちろん

b_average=[mean(C(1,:)); mean(C(2,:)); mean(C(3,:));mean(C(4,:))]; 

のみ9値を持つベクトルの際に最後の平均値は意味していない:それは完全性のためだけであるように私は、コードを残します。 また、Nが十分に大きい場合(Nはもちろんベクトル内のサンプル数)、乱数を持つベクトルの平均値は実際には値ゼロに近いことを覚えておいてください。

とにかく、forループはこれを実行する最良の方法ではありません。この行は、ループのための同じを行い

C=[rand(3,100);9*ones(1,100)]; 

(それはアドリアンで指摘したよう)

C=[rand(1,100);rand(1,100);rand(1,100);9*ones(1,100)]; 

以上:このような何かを使用してみてください。再度:Matlabの変数jiは予約されているので使用しないでください。

+1

ありがとうございます。それは本当にうまく動作し、それは完全な答えです。 – David

+0

私はこれがうれしいです!あなたがその答えを気に入ったら、それが役に立つと分かったら、投票することもできます!私は本当に感謝します – Leos313

関連する問題