OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8315|回复: 19

来一个点处理一个点,把波形变的平滑,有什么推荐的算法呢?

[复制链接]

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
发表于 2022-3-19 07:35:33 | 显示全部楼层 |阅读模式
1金钱
来一个点处理一个点,把波形变得平滑一些,有什么好的算法呢?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

141

帖子

0

精华

高级会员

Rank: 4

积分
679
金钱
679
注册时间
2020-11-21
在线时间
67 小时
发表于 2022-3-21 10:32:02 | 显示全部楼层
可以把常见的软件滤波算法挨个试一遍
回复

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2765
金钱
2765
注册时间
2018-11-8
在线时间
438 小时
发表于 2022-3-21 10:39:27 | 显示全部楼层
得看你的信号大概什么样子
下面这个介绍的比较全了 挑一个符合你信号变化规律的就行
https://blog.csdn.net/weixin_43455581/article/details/109716571
回复

使用道具 举报

11

主题

2131

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4731
金钱
4731
注册时间
2015-1-10
在线时间
591 小时
发表于 2022-3-21 11:24:03 | 显示全部楼层
你是要处理原始数据还是只是处理显示曲线?
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2022-3-22 10:58:04 | 显示全部楼层
阿侑kevin 发表于 2022-3-21 11:24
你是要处理原始数据还是只是处理显示曲线?

处理曲线,让曲线变的平滑,貌似卡尔曼可以,但是不太懂
回复

使用道具 举报

12

主题

160

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2749
金钱
2749
注册时间
2017-12-16
在线时间
200 小时
发表于 2022-3-22 16:24:22 | 显示全部楼层
变平滑?插值?
回复

使用道具 举报

7

主题

42

帖子

0

精华

高级会员

Rank: 4

积分
660
金钱
660
注册时间
2018-12-18
在线时间
157 小时
发表于 2022-3-22 16:50:45 | 显示全部楼层
ssssssssssss 发表于 2022-3-22 10:58
处理曲线,让曲线变的平滑,貌似卡尔曼可以,但是不太懂

double KalmanFilter(double inData)
{
    static double prevData = 0;                              //上一个数据
    static double p = 10, q = 0.00005, r = 0.005, kGain = 0; //q值控制误差,r控制响应速度
    p = p + q;
    kGain = p / (p + r);                                       //计算增益
    inData = prevData + (kGain * ((double)inData - prevData)); //计算本次滤波估计值
    p = (1 - kGain) * p;                                       //更新测量方差
    prevData = inData;
    return inData;
}
回复

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2765
金钱
2765
注册时间
2018-11-8
在线时间
438 小时
发表于 2022-3-22 17:56:22 | 显示全部楼层
daoyege 发表于 2022-3-22 16:50
double KalmanFilter(double inData)
{
    static double prevData = 0;                             ...

你这个卡尔曼滤波算法 我在好多地方也看到过类似的
不过有一点不是很理解
这里pqr都是定值, kg和更新p的公式也给出了 相当于有了首项和递推公式 数列p和数列kg各项都是可求的
经过若干次计算 最终kg会稳定在一个值上
这样最后不就演变成3楼我给的链接里最后一种情形了嘛???
就是新值等于(前一个值*权重+新值*(1-权重) 最后这个滤波算法不就之和权重kg有关了???
对于一个长期采集的传感器信号而言,这个滤波算法和q与r并没什么关系啊


QQ截图20220322175254.png
回复

使用道具 举报

7

主题

42

帖子

0

精华

高级会员

Rank: 4

积分
660
金钱
660
注册时间
2018-12-18
在线时间
157 小时
发表于 2022-3-23 14:32:11 | 显示全部楼层
babyrabbit 发表于 2022-3-22 17:56
你这个卡尔曼滤波算法 我在好多地方也看到过类似的
不过有一点不是很理解
这里pqr都是定值, kg和更新p ...

不是你那样用的,你直接带入输入值调用我给你的那个函数,调节r的大小,来控制滤波幅度
回复

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2765
金钱
2765
注册时间
2018-11-8
在线时间
438 小时
发表于 2022-3-23 16:21:29 | 显示全部楼层
daoyege 发表于 2022-3-23 14:32
不是你那样用的,你直接带入输入值调用我给你的那个函数,调节r的大小,来控制滤波幅度

我图里算的是那个增益kg,算法里q和r都是定值 p每次会更新 在p q r 三个值的初值都给定的情况下
滤波算法每次执行时的p和kg都是可求的 按我图里那样计算下每次的p与kg的值 可以看出执行50次以后 p基本稳定在0.000476 kg也基本是一个稳定的数了 大概是0.09513
这样在运行50次以后 这个算法不就约等于 inData = (1-0.09513)prevData +0.09513inData了嘛
而且可以得出这个结论:每次采集的新数据对于测量结果只有10%的影响 90%来自于上一次采集结果的影响
这不就退化成我分享的链接里给的最后一种形式了嘛???

我看网上推荐卡尔曼滤波好用 但是这样大费周章的算了p和kg 只有开始的情况会不太一样 但是对于一个信号长期采集的话 不知道优势体现在哪里呢?直接用inData = (1-k)preData+k*inData 这个公式不好吗 计算还快 直接调整权重k可以体现出更加相信采集值还是之前的测量值
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2022-3-24 17:45:13 | 显示全部楼层
daoyege 发表于 2022-3-22 16:50
double KalmanFilter(double inData)
{
    static double prevData = 0;                             ...

这个滤波只和前一个数据有关吗?,会不会误差比较大啊
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2022-3-25 13:02:50 | 显示全部楼层
daoyege 发表于 2022-3-22 16:50
double KalmanFilter(double inData)
{
    static double prevData = 0;                             ...

我的一个朋友有下面的看法.::


粗看,p的初始值有点问题吧。

第一轮,p等于10,那么kgain约等于1,第二轮,p值就几乎归零了。
可以用excel拉一个表格,观察kgain的变化,评估是否合理。

回复

使用道具 举报

7

主题

42

帖子

0

精华

高级会员

Rank: 4

积分
660
金钱
660
注册时间
2018-12-18
在线时间
157 小时
发表于 2022-3-25 14:40:00 | 显示全部楼层
ssssssssssss 发表于 2022-3-24 17:45
这个滤波只和前一个数据有关吗?,会不会误差比较大啊

可以用excel表格,用一串数据试试就知道了,这个函数是可以用的
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2022-3-25 16:08:48 | 显示全部楼层
daoyege 发表于 2022-3-25 14:40
可以用excel表格,用一串数据试试就知道了,这个函数是可以用的

好的我试试,谢谢大神
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2022-3-26 15:54:19 | 显示全部楼层
daoyege 发表于 2022-3-25 14:40
可以用excel表格,用一串数据试试就知道了,这个函数是可以用的

这个函数怎么放excel里面呢?不懂这个方法呢。能不能大概说说
回复

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2765
金钱
2765
注册时间
2018-11-8
在线时间
438 小时
发表于 2022-3-26 16:53:19 | 显示全部楼层
ssssssssssss 发表于 2022-3-25 13:02
我的一个朋友有下面的看法.::

不光是P的初始值问题
经过多次计算 最后p kg都会趋近于一个常数,
这个算法就会演变为一阶滞后滤波算法,每次的结果只与上次采集值与本次采集的新值有关
相关程度就是那个kg, 以8楼的计算结果 按照他给的初值 最后滤波算法会更倾向于上一次的采集值 大概上次值占90%新值占10% 所以经过滤波的结果会很平滑,即使有个突变值出现 也会因为10%的权重 让处理后的结果看起来并没有多大的变化 也就是灵敏度会降低很多 适合那种基本不怎么变化的缓变信号
当然如果调整kg让新值占比高的话 测试结果灵敏度会提升 但是平滑程度就低很多了

不过网上介绍卡尔曼滤波法 基本都是用的这种形式 我还不是很理解这个算法优势在哪里 至少对于一个长期测量的信号而言 我没看出这个和一阶滞后滤波法有什么区别 尤其是q和r两个噪声信号完全没有体现出算法赋予它的意义
貌似卡尔曼滤波法更加适用于多个参数对测量产生的影响 或者需要实时调整q和r两个噪声值 来保证kg与实际变化可以对应上 而不是将q和r写成2个常量 导致kg最后就是个常数
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2022-3-27 09:26:46 | 显示全部楼层
babyrabbit 发表于 2022-3-26 16:53
不光是P的初始值问题
经过多次计算 最后p kg都会趋近于一个常数,
这个算法就会演变为一阶滞后滤波算法 ...

你有推荐的算法没?
回复

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2765
金钱
2765
注册时间
2018-11-8
在线时间
438 小时
发表于 2022-3-27 10:43:19 | 显示全部楼层
ssssssssssss 发表于 2022-3-27 09:26
你有推荐的算法没?

3楼不都给你了吗 看你信号更适合哪一种 感觉4 5 10用的多一些
回复

使用道具 举报

7

主题

42

帖子

0

精华

高级会员

Rank: 4

积分
660
金钱
660
注册时间
2018-12-18
在线时间
157 小时
发表于 2022-3-28 11:04:28 | 显示全部楼层
ssssssssssss 发表于 2022-3-26 15:54
这个函数怎么放excel里面呢?不懂这个方法呢。能不能大概说说

不是把函数放里面,是把输入输出数据放里面,导出图表看波形,函数你用c软件
回复

使用道具 举报

0

主题

18

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2021-1-11
在线时间
193 小时
发表于 2022-6-28 10:01:06 | 显示全部楼层
我的理解  卡尔曼滤波+递推平均值滤波用在测温系统里面还可以
固定p值,调节q值。系统上电时,q值调大一点,即让卡尔曼滤波输出值更相信测量值。
待温度稳定之后,q值调小一点,即让卡尔曼滤波输出值更相信预测值。
经过递推平均值滤波后整个波形会比较可以。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 20:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表