2010-08-27 45 views

回答

2

首先,您將您的電池陣列成3D陣列,那麼你就可以取平均值,這樣的:

tmp = cat(3,Data{:}); %# catenates the data, so that it becomes a m*n*z (or m*1*n) 
averageData = mean(tmp,3); %# takes average along 3rd dimension 

注:如果您以這種方式獲得記憶問題,並且如果您不需要保留變量Data左右,你可以用Data代替tmp,所有的都可以正常工作。

另外,如果Data簡直是一個m * n個數字陣列

averageData = mean(Data,2); 
+0

感謝您的建議.. – Nadhris 2010-08-28 08:36:39

1

如果你的電池陣列是非常大的,你可能要保持,因爲它的內存使用量,從上述溶液路程。然後我會建議使用Matlab Central提供的工具mtimesxhere

N = length(Data); 
b = cell(N,1); 
b(:) = {1}; 
averageData = mtimesx(Data,b)/N; 

在上面的例子中,我假設Data是一個線形單元陣列。我從來沒有親自使用mtimesx,這個解決方案來自there,其中也討論了時序問題。

希望這會有所幫助。

A.

+0

感謝您的幫助..我現在就試試吧! – Nadhris 2010-08-28 08:37:08