2010-06-24 6 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 

또는 이미지 패키지

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); 

에서 IMFILTERFSPECIAL 사용하세요 패딩의 차이점을 확인하십시오. output1(wndw:end)output3

에 해당합니다.