2016-10-08 39 views
1

我有一個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

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

我想寫一個for循環,計算b多次說100然後這些載體存儲在矩陣C(現在爲4 * 100大小),然後計算平均所有列爲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_1然後b_2,....,b_100。如何將它們存儲在矩陣C=[b_1 b_2 ... b_100]中,然後計算所有列上的矩陣的平均值C,以便平均值將是大小爲4的矢量,大小與b相同。

+0

嘗試使用答案中的代碼,並讓我們知道它是否正常工作,以便我們可以嘗試解決其他問題,如果有 – Leos313

回答

1

我沒有Matlab的這檯筆記本電腦,但小腳本應該是這樣的:

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

矩陣C將包含所有的列矢量b。要訪問它們中的任何一個,只需使用b(:,x),其中x是您要使用的索引號或列。只有9值沒有意義在一個向量

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

課程的最後平均: 對於一般的,你可以做這樣的事情,我離開的代碼,因爲它僅僅是爲了保持完整性。 還要記住,如果N足夠大(其中N是當然向量中樣本的數量),則具有隨機數的向量的平均值將非常接近零值。

無論如何,for循環不是最好的方法來做到這一點。嘗試使用這樣的:

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

或更好(因爲它是由阿德里安指出)

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

這行做了同樣的for循環。再次嘗試:在Matlab中不要使用變量ji,因爲它們是保留的。

+1

謝謝。它確實工作正常,它是一個完整的答案。 – David

+0

我很高興!如果你喜歡答案,並且如果你覺得它有幫助,你也可以投票!我會很感激 – Leos313