首页 > 其他分享 >低通滤波器

低通滤波器

时间:2023-06-15 14:03:32浏览次数:32  
标签:0.9 滤波器 0.1 lowpass 低通滤波器 input


实现了这辈子的第一个滤波器,而学习《信号与系统》这门课,已经是5年前的事情了。

这次实现的是一个最最简单的“低通滤波器”,所谓低通滤波器,就是让低频通过,阻住高频。更简单的说,就是消除毛刺。。。


滤波器算法如下:

float lowpass = 0.0f;
	private float low_pass (float input)
	{
		lowpass = input * 0.1f + lowpass * 0.9f;
		return lowpass;
	}



简单得不能再简单,不过,真心很好用。。。


为什么滤波器理论中会有“频率”这个概念呢?明明不就是一个带有毛刺的,随着时间变化的高高低低的曲线么,哪里有什么频率概念?

根据高等数学理论,任何一个满足一定条件的信号,都可以被看成是由无限个正弦波叠加而成。当在某个dT时间内信号的变化十分剧烈,其分解得到的正弦波中高频率为主要成分,通过低通滤波器可以过滤掉高频部分,剩余没有被过滤掉的部分重新叠加成一个信号的时候,这个信号很微弱(主分量都被过滤掉了),因此,低通滤波器使得这个剧烈的变化变得“很不剧烈”。

那么,如何设计滤波器才能使得“低通”呢?下面这个算法,符合频域上的低通概念吗?还是一种山寨货而已?

lowpass = input* 0.1f + lowpass * 0.9f;


当input >> lowpass的时候,计算结果会偏离lowpass很远,例如:


lowpassorg = 10


input = 1000


那么


lowpass new = 1000 * 0.1 + 10 * 0.9 = 109


显然,lowpassnew  >> lowpassorg    



因此,这个滤波器并不能很好地过滤掉突然的、极大的干扰信号。为什么呢?两种原因:一种是这个滤波器根本就不是低通滤波器,是个山寨货。一种是这种突发的极大的干扰信号进行分解后,其低频部分依然 “很显著”,足以拉高输出结果。通过调整因子0.1,将其调整为0.0001,可以更好地消除这种突发干扰,但是带来的副作用则是让滤波器变得非常不灵敏。放在频域上理解,上述因子的调整使得滤波器的带宽变窄,可以通过的低频成分进一步减小。



求下述公式的频率表示:


lowpass = input* 0.1f + lowpass * 0.9f;





标签:0.9,滤波器,0.1,lowpass,低通滤波器,input
From: https://blog.51cto.com/u_16162111/6486729

相关文章