2010-06-24 15 views
9

मेरे पास प्रत्येक कॉलम के साथ एक मैट्रिक्स है जो समय के साथ एक सुविधा का प्रतिनिधित्व करता है। मुझे दिए गए विंडो आकार के साथ इन मानों के चलते औसत को खोजने की आवश्यकता है।ऑक्टेव टाइम सीरीज मूविंग औसत

क्या MATLAB में one जैसे कोई फ़ंक्शन है?

output = tsmovavg(vector, 's', lag, dim) 

उत्तर

19

आप FILTER फ़ंक्शन का उपयोग कर सकते हैं। एक उदाहरण:

t = (0:.001:1)';        %#' 
vector = sin(2*pi*t) + 0.2*randn(size(t));  %# time series 

wndw = 10;          %# sliding window size 
output1 = filter(ones(wndw,1)/wndw, 1, vector); %# moving average 

या यहाँ तक कि IMFILTER और FSPECIAL छवि पैकेज

output2 = imfilter(vector, fspecial('average', [wndw 1])); 

एक अंतिम विकल्प अनुक्रमण उपयोग कर रहा है (बहुत बड़े वेक्टर के लिए अनुशंसित नहीं)

%# get indices of each sliding window 
idx = bsxfun(@plus, (1:wndw)', 0:length(vector)-wndw); 
%'# compute average of each 
output3 = mean(vector(idx),1); 

से उपयोग करें पैडिंग में अंतर ध्यान दें: output1(wndw:end)output3

से मेल खाता है
संबंधित मुद्दे