matlab如何滤除低频尖峰脉冲

有时,数据会出现不必要的瞬态或尖峰。可以用中值过滤消除它们。

由Kaizong Ye,Liao Bao撰写

在存在60 Hz电源线噪声的情况下,考虑模拟仪器输入端的开环电压。采样率为1 kHz。

fs = 1000;
t =(0:numel(openLoopVoltage) -  1)/ fs;

×

通常我们会使用程序判断滤波的方式来过滤异常数据,比如说先对一个序列求平均值,方差等等,然后对每个数据和平均值或方差的偏差,设置一个阈值,差超过这个阈值就认为是异常数据,然后过滤。当然这个阈值只能是经验值,有时候不一定准确,或当异常数据变成常态的时候,异常数据就不再是异常数据,这时候如果还是使用阈值过滤就会有一些问题。当然程序判断滤波的方式还是适用于一些场景,并且实现比较方便。

在做数据统计,分析以及图像处理中,为了防止噪声对数据结果的影响,除了采用更加科学的采样技术外,我们还要采用一些必要的技术手段对原始数据进行整理、统计。数字滤波技术是最基本的处理方法,它可以剔除数据中的噪声,提高数据的代表性。常用的滤波技术有:程序判断滤波,均值滤波,中值滤波,加权平均,滤波,众数滤波,一阶滞后滤波,移动滤波,复合滤波等。

由于上面例子的需求对平均值这个具体的数字不是要求特别准,只是一个大概的数字,所以我们使用中值滤波的原理来处理。均值滤波或其他方式也可以使用,但就这个例子来说,中值滤波原理的效果会比较好一些。

中值滤波的原理,来自百度,比较容易理解:中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。二维中值滤波输出为g(x,y)=med{f(x-k,y-l),(k,l∈W)} ,其中,f(x,y),g(x,y)分别为原始图像和处理后图像。W为二维模板,通常为2*2,3*3区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。


通过在随机点添加随机信号的瞬变来破坏信号。 

yax = ylim;

该函数medfilt1用该点的中值和指定数量的相邻点替换信号的每个点。



可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498

关注有关新文章的微信公众号


永远不要错过任何见解。当新文章发表时,我们会通过微信公众号向您推送。

技术干货

最新洞察

This will close in 0 seconds