低通滤波器

实现了这辈子的第一个滤波器,而学习《信号与系统》这门课,已经是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;

请懂得的同学留言;)

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值