2015-10-15 108 views
1

我有一個變量m1的數組數組,它​​是一個288 X 13數組。我需要按順序平均24行,每列12次。我已經多次嘗試通過計算平均值來使用此索引we,但我得到的答案不正確。我期望的結果(meanf1)是一個12 X 13數組,顯示每列數據的12行平均值。謝謝!平均序列行MATLAB一次一列

we = 1 25 49 73 97 121 145 169 193 217 241 265 

    for ii = 1:13; 
     for jj = 1:12; 
      meanf1(jj,ii) = mean(m1(we(jj):we(jj)+23,ii)); 
     end; 
    end` 
+0

我不明白你想要什麼。你能告訴我們一個小數字例子嗎? – rayryeng

+0

你能告訴我們爲什麼你認爲你的答案是錯的嗎? –

+0

平均值與我手動或手動操作平均值時相比較,有時候我應該有平均值的零點。我需要找出平均24個值的方法,然後跳到下一個24個值,然後取平均值,然後跳到下一個24個值,取平均值,共計12次。做了這12次後,我需要對下一列做同樣的事情,我有13列。我需要的結果是12行13列的平均值。我希望這是有道理的!謝謝!! – user2100039

回答

0

鑑於由we創建的規則間隔的間隔,您可以重塑,然後使用mean,就像這樣 -

meanf1 = reshape(mean(reshape(m1(1:288,1:13),24,[]),1),12,13); 
+0

這真是太棒了 - 謝謝! – user2100039

0

這應該工作:

for jj = 1:12  
    meanf1(jj,:) = mean(m1((floor((1:288)./24) == jj),:));  
end 

一個另外.... 這取決於你如何要平均..你可能還需要考慮使用小區

meanf1(jj,:) = mean(m1((ceil((1:288)./24) == jj),:)); 
0

這裏有一些小錯誤。在我的頭頂,適應你版本的最簡單的方法是將jj改成你想要的「我們」的數字。你也不需要使用2 for循環,因爲你可以使用一個維度作爲vecot。這是一個可能的解決方案,但我覺得它不是最好的。

m1=rand(288,13); 

    meanf1=ones(12,13); %preallocation is always better 
    i=1; 
    for jj = 1:24:265 ; 
     meanf1(i,:) = mean(m1(jj:jj+23,:)); 
     i=i+1; 
    end;