数据滤波算法
1. 几种经典的滤波算法
文章标题:几种经典的滤波算法
1、限幅滤波法(程序判断滤波法)
方法:确定允许的最大偏差值(A),如果新值与上次值之差小于等于A,则有效;大于A则无效,使用上次值。优点是能有效克服偶然因素引起的脉冲干扰,但无法抑制周期性干扰,平滑度较差。
2、中位值滤波法
方法:连续采样N次(N为奇数),取中间值为有效值。优点是对缓慢变化的参数有良好滤波效果,但对快速变化参数不适用。
3、算术平均滤波法
方法:连续取N个采样值进行算术平均,适用于随机干扰的信号,但不适用于快速变化的参数和实时控制,且RAM使用较多。
4、递推平均滤波法(滑动平均滤波法)
方法:将连续N个采样值作为队列,每次采样新值放入队尾,队首数据移除,计算平均值。适用于高频振荡系统,但灵敏度低,不适合脉冲干扰严重的场合。
5、中位值平均滤波法(防脉冲干扰平均滤波法)
方法:连续采样N个数据,去掉最大值和最小值,计算剩余数据的平均值。优点是结合了两种滤波法的优点,能消除脉冲干扰,但测量速度较慢。
6、限幅平均滤波法
方法:采样新值先进行限幅处理,再进行平均滤波。优点是结合两种滤波法的优点,能消除脉冲干扰,但RAM使用较多。
7、一阶滞后滤波法
方法:本次滤波结果=上次滤波结果*(1-a) +本次采样值*a,适用于波动频率高的场合,但相位滞后,灵敏度低。
8、加权递推平均滤波法
方法:对递推平均滤波法改进,给予新采样值更大权重,适用于有较大纯滞后时间常数的对象和采样周期短的系统,但不能迅速反应干扰严重程度。
9、消抖滤波法
方法:设置滤波计数器,比较采样值与当前有效值,若相等则清零,不等则计数器+1,计数器溢出则替换当前有效值。优点是对缓慢变化参数有效,但不适用于快速变化参数。
10、限幅消抖滤波法
方法:先进行限幅,后消抖,继承了限幅和消抖优点。适用于需要避免干扰值导入系统的情况。
11、IR数字滤波器
方法:根据信号带宽滤波,设计简单(使用matlab),但运算量大。
总结:根据需求合理选择滤波算法,进行测试,可提高交易系统效率。
2. 什么是滤波算法
卡尔曼滤波器(Kalman Filter)是一个最优化自回归数据处理算法(optimal recursive data processing algorithm)。对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。
最佳线性滤波理论起源于40年代美国科学家Wiener和前苏联科学家Kолмогоров等人的研究工作,后人统称为维纳滤波理论。从理论上说,维纳滤波的最大缺点是必须用到无限过去的数据,不适用于实时处理。为了克服这一缺点,60年代Kalman把状态空间模型引入滤波理论,并导出了一套递推估计算法,后人称之为卡尔曼滤波理论。卡尔曼滤波是以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是:采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。它适合于实时处理和计算机运算。
现设线性时变系统的离散状态防城和观测方程为:
X(k) = F(k,k-1)·X(k-1)+T(k,k-1)·U(k-1)
Y(k) = H(k)·X(k)+N(k)
其中
X(k)和Y(k)分别是k时刻的状态矢量和观测矢量
F(k,k-1)为状态转移矩阵
U(k)为k时刻动态噪声
T(k,k-1)为系统控制矩阵
H(k)为k时刻观测矩阵
N(k)为k时刻观测噪声
则卡尔曼滤波的算法流程为:
预估计X(k)^= F(k,k-1)·X(k-1)
计算预估计协方差矩阵
C(k)^=F(k,k-1)×C(k)×F(k,k-1)'+T(k,k-1)×Q(k)×T(k,k-1)'
Q(k) = U(k)×U(k)'
计算卡尔曼增益矩阵
K(k) = C(k)^×H(k)'×[H(k)×C(k)^×H(k)'+R(k)]^(-1)
R(k) = N(k)×N(k)'
更新估计
X(k)~=X(k)^+K(k)×[Y(k)-H(k)×X(k)^]
计算更新后估计协防差矩阵
C(k)~ = [I-K(k)×H(k)]×C(k)^×[I-K(k)×H(k)]'+K(k)×R(k)×K(k)'
X(k+1) = X(k)~
C(k+1) = C(k)~
3. 软件滤波的算法
软件滤波算法有很多种,其中常见的是数字滤波器算法。数字滤波器主要通过软件编程实现,常用于信号处理、通信等领域。常见的软件滤波算法有:
一、卡尔曼滤波算法
卡尔曼滤波是一种基于状态估计的线性滤波方法,可以有效地从带有噪声的数据中估计出真实的状态。这种算法适用于许多动态系统的滤波问题,如传感器数据融合、机器人导航等。
二、数字低通滤波器
数字低通滤波器是一种常见的软件滤波算法,它可以允许低频信号通过,同时抑制高频噪声。这种滤波器在去除数据中的高频噪声成分时,能够有效地保留有用的低频信息。数字低通滤波器可以通过多种方法实现,如简单平均滤波、滑动平均滤波等。
三、傅里叶变换滤波算法
傅里叶变换常用于信号处理和图像处理中。通过将信号分解成频率成分,可以使用傅里叶变换实现滤波效果。对于包含特定频率噪声的信号,可以通过滤除特定频率成分来实现滤波效果。这种算法在处理包含周期性噪声的信号时非常有效。
软件滤波算法主要通过软件编程实现,用于处理包含噪声的信号或数据。这些算法旨在从带有噪声的数据中提取出真实、有用的信息。卡尔曼滤波算法是一种基于统计估计的方法,适用于动态系统的状态估计问题。数字低通滤波器则是一种允许低频信号通过、抑制高频噪声的滤波器。此外,傅里叶变换滤波算法通过分解信号频率成分实现滤波效果,适用于处理包含特定频率噪声的信号。这些软件滤波算法在信号处理、通信、图像处理等领域有广泛应用。在实际应用中,可以根据具体需求和场景选择合适的软件滤波算法。