滤波器的种类有哪些上篇

描述

在讲解滤波器的种类之前,必须先讲解滤波器实现滤波的过程。怎么实现?matlab中是可以用filter函数,那总不能在单片机或者FPGA中也调用filter函数吧。可能吗?

不可能!

那怎么实现滤波过程呢?先来了解滤波过程的本质,就是乘加运算。FPGA里面实现乘加运算时非常容易的。

先来看看FIR滤波器在窗函数设计方式中采用不同窗的效果。怎么观察效果?肯定是通过幅频响应了。

数字信号处理中通常是取其有限的时间段进行分析,而不是对无限长的信号进行测量和运算。具体做法是从信号中截取一个时间段,然后对信号进行傅里叶变换、相关分析等处理。信号的截断产生了能量泄漏,而用FFT计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的。在FFT分析中为了减少或消除频谱能量泄漏及栅栏效应,可采用不同的截取函数对信号进行截短,该函数称为窗函数,简称为窗。

泄漏与窗函数频谱的两侧旁瓣有关,对于窗函数的选用总的原则是,要从保持最大信息和消除旁瓣的综合效果出发来考虑问题,尽可能使窗函数频谱中的主瓣宽度应尽量窄,以获得较陡的过渡带。旁瓣衰减应尽量大,以提高阻带的衰减,但通常都不能同时满足这两个要求。频谱中的如果两侧瓣的高度趋于零,而使能量相对集中在主瓣,就可以较为接近于真实的频谱。不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。信号的加窗处理,重要的问题是在于根据信号的性质和研究目的来选用窗函数。

在设计FIR滤波器时,同样要求窗函数不仅可以影响过渡带宽度,还能影响肩峰和波动的大小。因此,,选择窗函数应使其满足以下两个要求: 

(1)主瓣宽度尽量小,以使过渡带尽量陡。 

(2)旁瓣相对于主瓣越小越好,这样可使肩峰和波动减小,即尽可能集中于主瓣内。 

MATLAB仿真

fir1函数默认使用的是什么窗呢?

在matlab的help中查找该函数就能知晓!

还有哪些窗可以选择呢?

MATLAB仿真

MATLAB仿真

MATLAB仿真

再来看看程序如何?

理论和仿真结合在一起,

会使得大家牢固的掌握概念。

MATLAB仿真

格式必须规范!

MATLAB仿真

这里只举高通滤波器和低通滤波器的例子。

MATLAB仿真

MATLAB仿真

程序很简单。

只要同学们花时间就能搞清楚。

规范的写程序是写好程序的开始!

继续讲解滤波过程的乘加等效原理。

用程序说话是硬道理!

生成一个滤波器!

写程序伴随着注释会让程序很亲民哦!

fir_order = 128;

%滤波器的阶数

fir_low_filter = fir1(fir_order,0.2);

%fir1函数

使用filter函数进行滤波!

filter_sin_signal = filter(fir_low_filter,1,sin_signal);

怎么用乘加等效呢?

思考一下再看程序!

for i=129:length(sin_signal)

sum = 0;

for ii=1:length(fir_low_filter)    

sum=sum+sin_signal(i-(ii-1))*filter_sin_signal(ii);

end

filter_sin_signal1(i)=sum;

end

看看结果会一致吗?

肯定的啦!

是不是和卷积过程很像啊?好吧,尴尬的告诉大家,其实就是卷积。这就是为什么在课上强调卷积是《数字信号处理课程》基础的原因!

未完,待续!

责任编辑:xj

原文标题:电气信息类专业课程之matlab系统仿真 第三章 滤波器的种类(1)

文章出处:【微信公众号:算法工匠】欢迎添加关注!文章转载请注明出处。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分