打印
[MM32软件]

ADC常用滤波算法提要

[复制链接]
1368|40
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
belindagraham|  楼主 | 2024-9-28 22:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1. 限幅滤波法(又称程序判断滤波法)

设随机变量为X,定义一误差幅值A,滤除|Xn-Xn-1|>A的值。



2. 中位值滤波法

连续采样奇数次,排序取中间值。



3.算数平均滤波法

连续取 N 个采样值进行算术平均运算。



4.递推平均滤波法(又称滑动平均滤波法)

把连续取 N 个采样值看成一个队列

队列的长度固定为 N

每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据(先进先出原则)

把队列中的 N 个数据进行算术平均运算,就可获得新的滤波结果



5.中位值平均滤波法(又称防脉冲干扰平均滤波法)

相当于“中位值滤波法”+“算术平均滤波法”

连续采样 N 个数据,去掉一个最大值和一个最小值

然后计算 N-2 个数据的算术平均值



6.限幅平均滤波法

相当于“限幅滤波法”+“递推平均滤波法”

每次采样到的新数据先进行限幅处理,

再送入队列进行递推平均滤波处理



7.一阶滞后滤波法

取 a=0~1

本次滤波结果=(1-a) 本次采样值+a上次滤波结果



8.加权递推平均滤波法

是对递推平均滤波法的改进,即不同时刻的数据加以不同的权

通常是,越接近现时刻的数据,权取得越大。

给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低



9.消抖滤波法

设置一个滤波计数器

将每次采样值与当前有效值比较:

如果采样值=当前有效值,则计数器清零

如果采样值<>当前有效值,则计数器+1,并判断计数器是否>=上限 N(溢出)

如果计数器溢出,则将本次值替换当前有效值,并清计数器



10.限幅消抖滤波法

相当于“限幅滤波法”+“消抖滤波法”; 先限幅,后消抖

以上算法截取自https://blog.csdn.net/u011852186/article/details/126484032



11.卡尔曼滤波

下面是一个极简卡尔曼滤波。

算法的核心思想是,根据当前的仪器”测量值” 和上一刻的 “预测量” 和 “误差”,计算得到当前的最优量.

再预测下一刻的量, 里面比较突出的是观点是. 把误差纳入计算, 而且分为预测误差和测量误差两种.通称为 噪声. 还有一个非常大的特点是,误差独立存在, 始终不受测量数据的影响。

R值固定,Q值越大,代表越信任测量值,Q值无穷大,代表只用测量值。

Q值越小,代表越信任模型预测值,Q值为0,代表只用模型预测值。

float KalmanFilter( float inData )

{

}static float prevData = 0; //上一个数据

static float p = 10, q = 0.001, r = 0.001, kGain = 0; // q 控制误差 r 控制响应速度

p = p + q;

kGain = p / ( p + r ); //计算卡尔曼增益

inData = prevData + ( kGain * ( inData – prevData ) ); //计算本次滤波估计值

p = ( 1 – kGain ) * p; //更新测量方差

prevData = inData;

return inData;

}


使用特权

评论回复
沙发
lzbf| | 2024-10-3 07:44 | 只看该作者
通过设定上下限阈值,剔除超出阈值范围的异常值,适用于有明显异常值的情况。

使用特权

评论回复
板凳
earlmax| | 2024-10-3 08:43 | 只看该作者
滤波算法各有优缺点,选择哪种算法取决于具体的应用场景和需求。

使用特权

评论回复
地板
timfordlare| | 2024-10-3 09:24 | 只看该作者

模数转换器(ADC)在将模拟信号转换为数字信号时,往往会受到噪声的干扰,因此在ADC的数据处理中,滤波算法的应用是非常关键的。

使用特权

评论回复
5
burgessmaggie| | 2024-10-3 10:19 | 只看该作者
选取连续采样值中的中位数作为有效值,对脉冲干扰有较好的抑制作用。

使用特权

评论回复
6
sesefadou| | 2024-10-3 12:09 | 只看该作者
Butterworth滤波器              

使用特权

评论回复
7
albertaabbot| | 2024-10-3 14:50 | 只看该作者
一阶滞后滤波法(又称惯性滤波法)
本次滤波输出值由本次采样值和上次滤波输出值加权得到,其中权值取决于滤波系数。滤波系数越大,本次采样值的权重越大,滤波输出对输入变化的响应越快,但滤波效果会减弱。

使用特权

评论回复
8
mollylawrence| | 2024-10-3 16:23 | 只看该作者
算术平均滤波法连续取N个采样值进行算术平均运算。N值较大时,信号平滑度较高,但灵敏度较低;N值较小时,信号平滑度较低,但灵敏度较高。

使用特权

评论回复
9
hilahope| | 2024-10-3 18:01 | 只看该作者
根据输入信号的统计特性自动调整滤波器参数的方法。这种方法能够适应信号的变化,提高滤波效果。

使用特权

评论回复
10
yorkbarney| | 2024-10-3 19:51 | 只看该作者
一种递归滤波器,能够估计信号的状态,并预测其未来值,适用于复杂的动态系统。

使用特权

评论回复
11
mollylawrence| | 2024-10-4 13:21 | 只看该作者
在算术平均滤波的基础上,先去掉N个数据中的最大值和最小值,然后计算余下数据的算术平均值。这种方法可以有效地消除由于偶然因素引起的波动干扰。

使用特权

评论回复
12
qiufengsd| | 2024-10-4 14:58 | 只看该作者
计算连续采样值的算术平均值,适用于随机误差较多的情况。

使用特权

评论回复
13
dspmana| | 2024-10-4 16:37 | 只看该作者
在高精度测量和动态系统中应用广泛,如导航系统、机器人控制等领域。

使用特权

评论回复
14
gygp| | 2024-10-4 18:19 | 只看该作者
滤波算法可以根据具体的应用场景选择合适的算法或组合使用,以达到最佳的滤波效果。

使用特权

评论回复
15
qiufengsd| | 2024-10-4 19:55 | 只看该作者
中位值滤波法能有效克服因偶然因素引起的波动干扰,对温度、液位等变化缓慢的被测参数有良好的滤波效果。

使用特权

评论回复
16
albertaabbot| | 2024-10-4 21:37 | 只看该作者
若信号中存在较多脉冲噪声,中值滤波器是一个不错的选择。

使用特权

评论回复
17
jackcat| | 2024-10-5 09:16 | 只看该作者
平滑度取决于平均的采样点数,点数越多,平滑效果越好,但响应速度会变慢。

使用特权

评论回复
18
cashrwood| | 2024-10-5 10:49 | 只看该作者
算数平均滤波法
方法:连续采样N次,取这N个采样值的平均值。
优缺点:能够消除随机干扰,提高数据的稳定性,但可能会增加计算量和延迟。

使用特权

评论回复
19
hudi008| | 2024-10-5 12:23 | 只看该作者
#define N 11
char filter() {
    char value_buf[N];
    char count, i, j, temp;
    for (count = 0; count < N; count++) {
        value_buf[count] = get_ad(); // 获取采样值
        delay(); // 延时以模拟实际采样过程中的时间间隔
    }
    // 冒泡排序
    for (j = 0; j < (N - 1); j++) {
        for (i = 0; i < (N - j - 1); i++) {
            if (value_buf[i] > value_buf[i + 1]) {
                temp = value_buf[i];
                value_buf[i] = value_buf[i + 1];
                value_buf[i + 1] = temp;
            }
        }
    }
    return value_buf[(N - 1) / 2]; // 返回中间值
}

使用特权

评论回复
20
51xlf| | 2024-10-5 13:56 | 只看该作者
结合限幅滤波和算术平均滤波,先剔除异常值再求平均值。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

1421

帖子

0

粉丝