11

各列が経時的な機能を表すマトリックスがあります。特定のウィンドウ サイズでこれらの値の移動平均を見つける必要があります。

MATLABのよう関数はありますか?

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

1 に答える 1

21

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

または、Image PackageのIMFILTERFSPECIALを使用することもできます

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

最後のオプションの 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

于 2010-06-24T23:46:07.950 に答える