函数 > 变换和滤波器 > 示例:滤波与指数平滑
  
示例:滤波与指数平滑
比较使用 Detrending and Lowpass Filtering in the Transform DomainTime-domain Iterative Exponential Smoothing 方法得到的平滑效果。
1. 定义数据点的数量。
单击复制此表达式
单击复制此表达式
2. 使用 sinrnd 函数来定义要进行平滑处理的函数。
单击复制此表达式
3. 创建一个表示每个样本时间的矢量。
单击复制此表达式
单击复制此表达式
4. 使用 slope 函数信号获得与信号最佳拟合的直线的斜率,然后使用 mean 函数获得信号的平均值。
单击复制此表达式
单击复制此表达式
5. 绘制函数图像并显示其趋势线和中线。
单击复制此表达式
中线是水平的,而趋势线则不是;表示此信号具有线性趋势。
在变换域中进行趋势消除和低通滤波
通过滤波进行平滑的第一步是移除线性趋势,否则变换会显示线性信号的频率分量,而非更高的频率含量。
1. 从信号中移除趋势。重新计算斜率和新信号的平均值。
单击复制此表达式
单击复制此表达式
单击复制此表达式
2. 绘制新函数图像并显示其趋势线和中线。
单击复制此表达式
中线和趋势线都是水平的;表示此信号不具有线性趋势。
3. 使用 dft 函数获得信号的变换。
单击复制此表达式
4. 通过将中间的元素清零而只保存表示低频率的开头和末尾元素来对变换进行加窗。
单击复制此表达式
5. 绘制开窗函数的图像。使用竖直标记显示窗口的开头和末尾。
单击复制此表达式
6. 使用 idft 函数来获得逆变换,并将趋势重新加入。
单击复制此表达式
由于矢量添加以元素为单位,因此使用一个加法运算符即可将趋势重新加入。
7. 绘制 dw 函数图像。
单击复制此表达式
趋势已恢复为平滑函数。
时域迭代指数平滑
使用种子迭代平滑方法。要获得迭代的种子值,请通过观察以下序列的开头来估计平稳值和趋势值,即 sb
1. 使用 interceptslope 函数来估计平稳值和趋势值。
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
2. 选取两个平滑常量。α 越趋近于 1,平滑曲线的轨迹就会越逼近原始数据。
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
其中 P 是原始时序的指数平滑版本。
比较两种方法
绘制两种平滑方法的图像并进行比较。最上面两条轨迹偏移了 4 个单位,以便它们可以显示在同一幅图表上。
单击复制此表达式
以上轨迹对应于以下平滑类型 (从上到下):时序、指数平滑、时序、通过 DFT 进行的平滑。
直到通过平滑系数 ab 对足够多的点取平均值后,指数平滑才会开始有效地追踪数据。
重新计算工作表,并观察在原始信号定义过程中拥有不同随即数字时轨迹如何变化。
每次重新计算后都可以看到,DFT 平滑函数比指数平滑函数更能拟合原始信号的轨迹。