2012-08-17 139 views
-2

我有一個有4行和400,000列的矩陣。我需要獲得連續4行的平均值。也就是說,第1行到第4行,第5行到第8行的平均值等。數組的平均值

4列應該保持原樣。我知道這可能是幼兒園水平問題,但我很欣賞在Matlab中編寫程序的任何提示;我有一些編寫Matlab程序的經驗。

數據的一個例子可以如下:

[1 2 3 2; 
5 6 7 2; 
9 6 7 6; 
5 2 3 2; 
9 8 7 6; 
6 5 4 3; 
4 3 2 1; 
9 8 7 6] 

我想要的結果爲:

[5 4 5 3],[7 6 5 4] 
+2

社區通常期望您發佈一些代碼,演示您已經嘗試過的內容,或許需要幫助更正部分代碼。您可以通過點擊上面的「編輯」鏈接來編輯您的問題。 – razlebe 2012-08-17 07:42:21

+2

現在是什麼? 4行400k列或4列和400k行?看起來像後者... – 2012-08-17 07:55:42

回答

2

這是不完全清楚,我的數據是如何奠定了,所以我我會給你一個解決方案,我認爲你的意思。

假設你有

a = [ 
    1 2 3 4 %# row 1 
    2 3 4 5 
    3 4 5 6 
    4 5 6 7 %# row 4 
    5 6 7 8 %# row 5 
    ... 
    ];    %# row m 

,並且希望通過4平均下來行1列,5至8等 你可以做到這一點只需

averages = reshape(mean(reshape(a,4,4,[])),[],4) 

故障:

A = reshape(a,4,4,[]) 

將矩陣中的數據重新排列爲3D數組。該陣列的每個3D「層」都是一個4x4矩陣。

B = mean(A) 

這需要沿列的方向(方向1)。請閱讀help mean瞭解更多信息。

C = reshape(B,[],4) 

該重新排列平均的陣列回Nx4矩陣,其中N=m/4