函数 > 数据分析 > 平滑 > 示例:数据平滑
  
示例:数据平滑
使用 movavgexpsmoothmedsmooth 函数来执行平均线移动、指数数据平均化或中值滤波。这些函数通过对数据集中各点及其相邻点求平均值、减少数据的不规则性来平滑数据。
移动平均线
对于时间 t = 0, 1, 2, . . . , n - 2,在 t 处的平滑值等于时间 t 之前所有观察值的算术平均值。在获得 n 个观察值后,时间 t 处的平滑值即为时间 t 处的观察值和前 n - 1 个观察值的平均值。
1. 使用函数 sin 定义衰减的正弦信号。
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
2. 使用函数 rnd 引入一个均匀但随机的分量,使信号嘈杂。
单击复制此表达式
3. 调用函数 movavg 对数据进行平滑处理 (分别使用宽度为 2、10 和 20 的窗口)。
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
大窗口宽度会产生时间延迟。
指数平均线
使用阶跃函数来说明 movavgexpsmooth 之间的差异。指数数据平均线的计算方法如下:
单击复制此表达式
单击复制此表达式
对于 t = 1, . . . , last(x)
在时间 t 处被平滑的条目是当前观察值的权重 α 与上一个被平滑的观察值的平均值。
1. 定义并绘制阶跃函数图像。
单击复制此表达式
单击复制此表达式
单击复制此表达式
对于负 t,添加 0.3 以将该函数设为零。
单击复制此表达式
单击复制此表达式
0.7 代替 1 以获得宽度为 1.0 的脉冲。
单击复制此表达式
2. 使用宽度为 4 的窗口,将函数 movavg 应用于阶跃函数。
单击复制此表达式
单击复制此表达式
单击复制此表达式
将函数 movavg 应用于阶跃函数可平滑从 1-to-0 的过渡 (样本数为 n=4)。
3. 使用权重 0.5 将函数 expsmooth 应用到阶跃函数。
单击复制此表达式
单击复制此表达式
单击复制此表达式
将函数 expsmooth 应用到阶跃函数可将从 1-to-0 的过渡平滑处理为一条曲线 (样本数为 10)。
expsmooth 可以采用与 movavg 相同的方式进行市场趋势预测,但实际上大多数专业人士都使用其他指标,例如同一原始数据在不同权重时的两个指数平滑值之差。
中值滤波
中值滤波可将输入的各元素替换为元素以及信号末端附近的 n-1 个或更少的邻点的中值。此方法可在平滑的同时保持边界并减少噪声。
在大型矩阵中,该函数执行的时间较长,因为它要对每个像素进行排序。在去除噪声的同时,中值滤波也可能会将信号中小的陡瞬变滤掉。
1. 定义并绘制指数信号。
单击复制此表达式
单击复制此表达式
单击复制此表达式
单击复制此表达式
2. 使用函数 whiten 通过添加随机白噪声来降低信号质量。
单击复制此表达式
单击复制此表达式
3. 使用函数 medsmooth 来应用中值滤波器,然后绘制经过滤波的信号。
单击复制此表达式
单击复制此表达式
单击复制此表达式
经过滤波的信号看上去更为平滑。
改变滤波长度,查看对噪声信号的效果。在实际应用中,与信号长度相比,中值滤波器的长度应相对小一些。