皮卡丘不会打乒乓球 发表于 2017-8-15 15:56:00

一个数据处理的问题




某系统,等待上位机传过来的检测数据,但是每次检测结果比实际情况大很多。
系统工作是要连续的收上位机检测数据,并且找出检测数据最大值对应的伺服位置,准确定在那个位置。
程序是别人写的,我只是帮忙调试。调试过程中发现问题根源在于每次上位机传过来的数据中会出现野值,这个值会比正常数据大很多。
该野值依然在最大范围,但是明显看出有不是正常数据,由上位机是黑盒系统,不知道具体检测原理,不能定位产生这个噪声的原因,噪声随机出现无规律。
最开始想到的办法就是加滤波器,但实际效果上很难设计滤波方案。
常见的噪声滤波器有几种吧
高斯滤波器,这东西属于平滑滤波,可以处理信号的毛刺。但这货对信号输入形式有要求啊,根本不满足实时性的条件。
基于频率响应设计的滤波器滤波是根据频段进行滤波的,比如巴特沃斯滤波器只能处理高频部分。随机出现的信号显然不是周期信号也谈不上什么频率问题。


基于协方差的卡尔曼滤波器,这东西是基于概率处理问题,采用了微分方程。但是也有问题。所有采用微分方程的滤波都是要求需要周期进行收敛的。如果数据量很小,在收敛过程结束以前就停了,其实跟本没法滤波。
目前的办法是直接忽略大于某个范围的值。
其实最好的办法就是上位机搞清楚这个值是怎么来的,然后直接在上位机处理。

2266998 发表于 2017-8-15 16:23:53

你可以试试看‘绕过去’黑盒子,先找到这个差值为什么产生的,

检测与原值差距很大的,要先找到问题,为什么,滞后问题,还是系统漂移,漂移的,必须先找到补偿措施,而滞后的,必须进行系统完整处理,不是随意弄一下就好了的,要整体改动了,

回火马氏体 发表于 2017-8-15 23:27:08

楼主试卡尔曼了没??我感觉卡尔曼应该是有用的,不过卡尔曼有个不好,曲线平滑了,滞后就特别大。。。。要求反应灵敏的话还是别用了。。。。。。
页: [1]
查看完整版本: 一个数据处理的问题