У меня есть матрица с каждым столбцом, представляет функцию со временем. Я должен найти скользящее среднее значение этих значений с данным размером окна.
Существует ли функция как та в MATLAB?
output = tsmovavg(vector, 's', lag, dim)
Вы можете использовать функцию ФИЛЬТР . Пример:
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