2010-06-24 23 views
9

Her sütunda bir matrisim zamanla bir özelliği temsil eder. Bu değerlerin hareketli ortalamasını belirli bir pencere boyutuyla bulmalıyım.Octave zaman serisi Hareketli ortalama

MATLAB içinde one gibi bir işlev var mı?

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

cevap

19

FILTER işlevini kullanabilirsiniz. Bir örnek: bile

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 

veya Görüntü Paketi

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

Son bir seçenek indeksleme kullanıyor (çok büyük vektörü için önerilmez)

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

den IMFILTER ve FSPECIAL kullanın doldurmadaki farkı not edin: output1(wndw:end), output3

'e karşılık gelir.