matlab - Octave 时间序列移动平均线

标签 matlab signal-processing time-series octave financial

我有一个矩阵,其中每一列代表一段时间内的一个特征。我需要找到给定窗口大小的这些值的移动平均值。

有没有类似one的函数在 MATLAB 中?

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

最佳答案

您可以使用 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

甚至使用 IMFILTERFSPECIAL来自图像包

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

请注意padding的区别:output1(wndw:end)对应output3

关于matlab - Octave 时间序列移动平均线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3114450/

相关文章:

signal-processing - 如何将低通滤波器转换为带通滤波器

python - Pandas - 时间序列按组移动

r - 如何将数据帧转换为时间序列?

r - 如何隔离该方法的图?

matlab - 如何删除单元格数组中的重复条目(当这些条目是2x2矩阵时)(Matlab)

Matlab `rowfun` 具有多个输出的函数: Safe to assume row order?

matlab - 使用多变量多项式的特征映射

c++ - SDR 中的射频分频器功能

c# - C#中的简单信号处理

matlab - 在 matlab 中绘制短时傅里叶变换(注意窗口大小和步长)