搜索
bottom↓
回复: 154

给大家梳理下FIR滤波器原理以及设计方法。附带matlab例子

  [复制链接]
(257448475)

出0入0汤圆

发表于 2013-8-26 17:24:59 | 显示全部楼层 |阅读模式
本帖最后由 705060359 于 2013-8-27 12:54 编辑



发现数字滤波器很有用,大家也都在使用。但是很多人不清楚其中的原理,今天我来给大家讲解下FIR滤波器的原理以及设计方法。

附带了一个处理语音的matlab例程,效果并不是很好,但是足以说明问题了。

这个matlab教程不是直接调用matlab的filter设计函数,而是一步一步设计滤波器,希望大家能有所收获。

matlab编译环境为2013a

附带一本数字信号处理基础的书,很好的书。大部分是从书中得到的。






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
(257427617)

出0入0汤圆

 楼主| 发表于 2013-8-26 23:12:37 | 显示全部楼层
为什么一个人都没有呢?
(257423728)

出0入0汤圆

发表于 2013-8-27 00:17:26 | 显示全部楼层
坐茶几看沙发
(257396529)

出0入0汤圆

发表于 2013-8-27 07:50:45 | 显示全部楼层
好资料收了,头像不错
(257395133)

出0入0汤圆

发表于 2013-8-27 08:14:01 | 显示全部楼层
记号一下,稍后下载
(257394912)

出0入0汤圆

发表于 2013-8-27 08:17:42 | 显示全部楼层
mark。。。。。。
(257387794)

出0入0汤圆

 楼主| 发表于 2013-8-27 10:16:20 | 显示全部楼层
过几天会出一个语音识别的例子,可以应用与智能家居。谢谢大家
(257386721)

出0入0汤圆

发表于 2013-8-27 10:34:13 | 显示全部楼层
记号一下
(257385042)

出0入0汤圆

发表于 2013-8-27 11:02:12 | 显示全部楼层
想了解一下,这可以用在哪里?
楼主可以补充一下需要的相关知识,
或是相关的操考书籍吗?
感觉数学方面的知识需要的比较多...。

btw...
能用分立元件实现吗?不太了解...。
(257380071)

出0入0汤圆

 楼主| 发表于 2013-8-27 12:25:03 | 显示全部楼层
opa 发表于 2013-8-27 11:02
想了解一下,这可以用在哪里?
楼主可以补充一下需要的相关知识,
或是相关的操考书籍吗?

fir滤波器的应用......
和模拟滤波器应用差不多,都可以滤波。只不过数字滤波器很方便修改移植。因为是对数字信号进行处理。
比如一个低通的FIR滤波器可以模糊图像,高通的滤波器可以锐化图像。这些都是滤波器的应用。
相关的知识:
需要理解使用单位脉冲响应h[n]
需要z变化(很简单)
需要一些加加减减
FIR滤波器对数学要求不高,你看看原理就知道了。
如果要更好的理解的话最好是能够从连续时间域过渡到离散时间域(信号与系统->数字信号处理)



因为是数字信号处理,所以能用74系列搭出来,但一般没人这样做。因为FPGA可以做。
(257378476)

出625入8汤圆

发表于 2013-8-27 12:51:38 来自手机 | 显示全部楼层
收藏了,楼主
(257362642)

出0入0汤圆

发表于 2013-8-27 17:15:32 | 显示全部楼层
感谢楼主分享~
(257362551)

出0入0汤圆

发表于 2013-8-27 17:17:03 | 显示全部楼层
好!刚好要学习FIR。感谢!
(257347148)

出0入0汤圆

发表于 2013-8-27 21:33:46 | 显示全部楼层
霸气到处漏。。。下一个
(257346943)

出0入0汤圆

发表于 2013-8-27 21:37:11 | 显示全部楼层
做个标记,明天到公司下来看看、不过我得用FPGA做
(257346415)

出0入0汤圆

发表于 2013-8-27 21:45:59 | 显示全部楼层
opa 发表于 2013-8-27 11:02
想了解一下,这可以用在哪里?
楼主可以补充一下需要的相关知识,
或是相关的操考书籍吗?

可以设计低通、高通、带通、带阻等滤波器。
通常对对滤波器性能越高,计算量越大。
(256222250)

出0入0汤圆

发表于 2013-9-9 22:02:04 | 显示全部楼层
可以设计低通、高通、带通、带阻等滤波器
(255124476)

出0入0汤圆

发表于 2013-9-22 14:58:18 | 显示全部楼层
mark
(255119931)

出0入0汤圆

发表于 2013-9-22 16:14:03 | 显示全部楼层
比较容易理解,好
(255119848)

出0入0汤圆

 楼主| 发表于 2013-9-22 16:15:26 | 显示全部楼层
lee345 发表于 2013-9-22 16:14
比较容易理解,好

嗯嗯,谢谢
(255118454)

出0入0汤圆

发表于 2013-9-22 16:38:40 | 显示全部楼层
好东西,学习一下
(255116837)

出0入0汤圆

发表于 2013-9-22 17:05:37 | 显示全部楼层
不错,可以多看看类似的数字信号处理的东西增加对数字世界的理解
(254328428)

出0入0汤圆

发表于 2013-10-1 20:05:46 | 显示全部楼层
早就想学数字滤波器设计了,谢谢啊
(254320803)

出0入0汤圆

发表于 2013-10-1 22:12:51 | 显示全部楼层
看起来不错   
(254230231)

出0入0汤圆

发表于 2013-10-2 23:22:23 | 显示全部楼层
总是觉得没信心能看懂……收藏着,继续努力
(253736849)

出0入0汤圆

 楼主| 发表于 2013-10-8 16:25:25 | 显示全部楼层
zhongshan9 发表于 2013-10-2 23:22
总是觉得没信心能看懂……收藏着,继续努力

为什么会觉得没有信心了呢?
看这些需要的是耐心,遇到不会的就去google,会有很多收获的
(250532711)

出0入0汤圆

发表于 2013-11-14 18:27:43 | 显示全部楼层
学习了,谢楼主
(250479959)

出0入0汤圆

发表于 2013-11-15 09:06:55 来自手机 | 显示全部楼层
感谢分享!FIR滤波器,matlab
(250118779)

出0入0汤圆

发表于 2013-11-19 13:26:35 | 显示全部楼层
好东西,正需要使用呢!!!谢谢啦!!!!
(250114721)

出0入4汤圆

发表于 2013-11-19 14:34:13 | 显示全部楼层
看来很久都没有弄明白这个东东
(250108591)

出0入0汤圆

 楼主| 发表于 2013-11-19 16:16:23 | 显示全部楼层
cwei 发表于 2013-11-19 14:34
看来很久都没有弄明白这个东东

其实原理很简单的~
(250047057)

出0入4汤圆

发表于 2013-11-20 09:21:57 | 显示全部楼层
705060359 发表于 2013-11-19 16:16
其实原理很简单的~

原理简单,实际用不简单,很难找到合适的一种参数,每次都只有慢慢试出来,而不是设计出来的
(250019115)

出0入0汤圆

 楼主| 发表于 2013-11-20 17:07:39 | 显示全部楼层
cwei 发表于 2013-11-20 09:21
原理简单,实际用不简单,很难找到合适的一种参数,每次都只有慢慢试出来,而不是设计出来的 ...

嗯~这个我倒是不懂诶,几乎没在实际中用过
不过理论总能指导大概的方向的
(249961763)

出0入4汤圆

发表于 2013-11-21 09:03:31 | 显示全部楼层
705060359 发表于 2013-11-20 17:07
嗯~这个我倒是不懂诶,几乎没在实际中用过
不过理论总能指导大概的方向的 ...

可能是没有找到方法吧,
(249960785)

出0入0汤圆

发表于 2013-11-21 09:19:49 | 显示全部楼层
MyOS 发表于 2013-8-27 08:14
记号一下,稍后下载

这是来 胸 场子的!!?
(249938602)

出0入0汤圆

发表于 2013-11-21 15:29:32 | 显示全部楼层
支持一下。
(249936021)

出0入0汤圆

发表于 2013-11-21 16:12:33 | 显示全部楼层
要学会matlab
(249226545)

出0入0汤圆

发表于 2013-11-29 21:17:09 | 显示全部楼层
先学习一下
(249225634)

出0入0汤圆

发表于 2013-11-29 21:32:20 | 显示全部楼层
来学习的
(249219541)

出0入0汤圆

发表于 2013-11-29 23:13:53 | 显示全部楼层
5楼的头像。。太销魂了
(246638395)

出0入0汤圆

发表于 2013-12-29 20:12:59 | 显示全部楼层
mark  飘过
(245764328)

出0入0汤圆

发表于 2014-1-8 23:00:46 | 显示全部楼层
这个必须顶一顶啊。。。
(242176136)

出0入0汤圆

发表于 2014-2-19 11:43:58 | 显示全部楼层
(242172072)

出0入0汤圆

发表于 2014-2-19 12:51:42 | 显示全部楼层
感谢楼主分享!
(242169231)

出0入0汤圆

发表于 2014-2-19 13:39:03 | 显示全部楼层
顶一下,下载来学习一下,以前也没弄懂
(242166871)

出0入0汤圆

发表于 2014-2-19 14:18:23 | 显示全部楼层
标记下。
(242152687)

出0入0汤圆

发表于 2014-2-19 18:14:47 | 显示全部楼层
可以呀,学习了。
(238701101)

出0入0汤圆

发表于 2014-3-31 17:01:13 | 显示全部楼层
mark一下
(238695551)

出0入0汤圆

发表于 2014-3-31 18:33:43 | 显示全部楼层
要处理语音,还是用spectral subtraction、winer、kalman这类通用的降噪好些。
很好奇楼主的语音识别做的怎么样了。
(237743213)

出0入0汤圆

发表于 2014-4-11 19:06:01 | 显示全部楼层
mark                     
(237743192)

出0入0汤圆

发表于 2014-4-11 19:06:22 | 显示全部楼层
不错,支持                       
(237740906)

出0入0汤圆

发表于 2014-4-11 19:44:28 | 显示全部楼层
mark                                         
(237645942)

出0入0汤圆

发表于 2014-4-12 22:07:12 | 显示全部楼层
收藏学习一下
(236978708)

出0入0汤圆

发表于 2014-4-20 15:27:46 | 显示全部楼层
下载学习,谢谢楼主!
(236915412)

出0入0汤圆

发表于 2014-4-21 09:02:42 | 显示全部楼层
mark                                         
(236914833)

出0入0汤圆

发表于 2014-4-21 09:12:21 | 显示全部楼层
因为只对采集的信号处理,所以一般只用IIR,FIR没用过,上大学时做过实验!
(236914465)

出0入0汤圆

发表于 2014-4-21 09:18:29 | 显示全部楼层
看了PDF,讲的很漂亮,没想到平均值滤波就是FIR低通滤波?!
(236914411)

出0入0汤圆

发表于 2014-4-21 09:19:23 | 显示全部楼层
jackielau 发表于 2014-4-21 09:12
因为只对采集的信号处理,所以一般只用IIR,FIR没用过,上大学时做过实验! ...

现在在了解IIR,很多数据采集都用到
(236888785)

出0入0汤圆

 楼主| 发表于 2014-4-21 16:26:29 | 显示全部楼层
rantingting 发表于 2014-4-21 09:18
看了PDF,讲的很漂亮,没想到平均值滤波就是FIR低通滤波?!

恩恩 对于无反馈的(也就是输出只和输入有关的)叫fir

当有反馈后(输出和以前的输出有关)叫iir

pid就是iir
(236873159)

出0入0汤圆

发表于 2014-4-21 20:46:55 | 显示全部楼层
705060359 发表于 2014-4-21 16:26
恩恩 对于无反馈的(也就是输出只和输入有关的)叫fir

当有反馈后(输出和以前的输出有关)叫iir

pid属于 iir ? 这是书里面讲的? 你这次可是刷新我大脑中两个概念了,意思平均滤波是低通,另一个就是这个PID!
(236870293)

出0入0汤圆

 楼主| 发表于 2014-4-21 21:34:41 | 显示全部楼层
rantingting 发表于 2014-4-21 20:46
pid属于 iir ? 这是书里面讲的? 你这次可是刷新我大脑中两个概念了,意思平均滤波是低通,另一个就是这 ...

其实就是两种说法的,从频率的角度看控制挺理解的
(236828913)

出0入0汤圆

发表于 2014-4-22 09:04:21 | 显示全部楼层
705060359 发表于 2014-4-21 21:34
其实就是两种说法的,从频率的角度看控制挺理解的

这个PID是IIR的论证过程有么,我想仔细看下,谢谢!
(236828420)

出0入0汤圆

发表于 2014-4-22 09:12:34 | 显示全部楼层
果断mark,一直想学,一直没时间。。。。
(236822107)

出0入0汤圆

 楼主| 发表于 2014-4-22 10:57:47 | 显示全部楼层
rantingting 发表于 2014-4-22 09:04
这个PID是IIR的论证过程有么,我想仔细看下,谢谢!

只需要知道FIR 和 IIR滤波器的定义就好了
顾名思义
FIR:有限冲击响应滤波器,无反馈
IIR:无限冲击响应滤波器,有反馈
而PID是依据偏差来控制的,那当然是有反馈的。

(236813648)

出0入0汤圆

发表于 2014-4-22 13:18:46 | 显示全部楼层
本帖最后由 rantingting 于 2014-4-22 13:19 编辑
705060359 发表于 2014-4-22 10:57
只需要知道FIR 和 IIR滤波器的定义就好了
顾名思义
FIR:有限冲击响应滤波器,无反馈


但是PID应该不是一种滤波吧,这不是一种反馈控制方式么
(236812809)

出0入0汤圆

发表于 2014-4-22 13:32:45 | 显示全部楼层
好资料收了
(236803395)

出0入0汤圆

 楼主| 发表于 2014-4-22 16:09:39 | 显示全部楼层
rantingting 发表于 2014-4-22 13:18
但是PID应该不是一种滤波吧,这不是一种反馈控制方式么

控制里面输入的也是信号,输出的也是信号~
不管是离散还是连续的。
通过频域来了解PID是这样的:
P是对所有频率的增益进行放大,包括噪声(高频)
而PI在低频段产生作用,提高了系统的型别
PD使相角裕度增大,减小超调。Wc增大,增快响应速度
(236803310)

出0入0汤圆

发表于 2014-4-22 16:11:04 | 显示全部楼层
705060359 发表于 2014-4-22 16:09
控制里面输入的也是信号,输出的也是信号~
不管是离散还是连续的。
通过频域来了解PID是这样的:

讲的漂亮,你对控制研究的很有深度啊
(236802966)

出0入0汤圆

发表于 2014-4-22 16:16:48 | 显示全部楼层
收藏了。卤煮
(236802883)

出0入0汤圆

发表于 2014-4-22 16:18:11 | 显示全部楼层
谢谢楼主,学习一下
(236797630)

出0入0汤圆

 楼主| 发表于 2014-4-22 17:45:44 | 显示全部楼层
rantingting 发表于 2014-4-22 16:11
讲的漂亮,你对控制研究的很有深度啊

哈哈,首先要谢谢你~不过这个是教科书上的~,我只是一枚好好学习的少年~
(236796916)

出0入0汤圆

发表于 2014-4-22 17:57:38 | 显示全部楼层
705060359 发表于 2014-4-22 17:45
哈哈,首先要谢谢你~不过这个是教科书上的~,我只是一枚好好学习的少年~ ...

这个就是你发的数字处理的书上的?我其实水平很一般
(236796542)

出0入0汤圆

 楼主| 发表于 2014-4-22 18:03:52 | 显示全部楼层
rantingting 发表于 2014-4-22 17:57
这个就是你发的数字处理的书上的?我其实水平很一般

额 不是的,那本书上面没有控制的内容
控制的内容参考《自动控制原理》 田玉平主编
(236796304)

出0入0汤圆

发表于 2014-4-22 18:07:50 | 显示全部楼层
705060359 发表于 2014-4-22 18:03
额 不是的,那本书上面没有控制的内容
控制的内容参考《自动控制原理》 田玉平主编 ...

在看自控原理  但是没有发现你说的这部分内容  所以才比较惊奇
(236796106)

出0入0汤圆

 楼主| 发表于 2014-4-22 18:11:08 | 显示全部楼层
我们学的这本书里面有,算是系统校正的例子
(236620025)

出0入0汤圆

发表于 2014-4-24 19:05:49 | 显示全部楼层
很实用,值得学习一下
(235166376)

出0入0汤圆

发表于 2014-5-11 14:53:18 | 显示全部楼层
mark了  mark了mark了mark了
(235154598)

出0入0汤圆

发表于 2014-5-11 18:09:36 | 显示全部楼层
下载了,谢谢
(233670876)

出625入8汤圆

发表于 2014-5-28 22:18:18 | 显示全部楼层
重新看看楼主辛苦
(233251837)

出0入0汤圆

发表于 2014-6-2 18:42:17 | 显示全部楼层
mark 下~~~~~~~~~~~~~
(233249066)

出0入0汤圆

发表于 2014-6-2 19:28:28 | 显示全部楼层
好东西,有利于更进一步啊。
(233245448)

出10入0汤圆

发表于 2014-6-2 20:28:46 | 显示全部楼层
楼主强大啊!mark!!!
(233197374)

出0入0汤圆

发表于 2014-6-3 09:50:00 | 显示全部楼层
好贴:果断收藏,
(232940697)

出0入0汤圆

发表于 2014-6-6 09:07:57 | 显示全部楼层
楼主辛苦了~!
(232939811)

出0入0汤圆

发表于 2014-6-6 09:22:43 | 显示全部楼层
很好的资料,感谢lz的分享。
(230607338)

出0入0汤圆

发表于 2014-7-3 09:17:16 | 显示全部楼层
最近要转研发,正好需要相关资料,谢谢
(230318631)

出0入0汤圆

发表于 2014-7-6 17:29:03 | 显示全部楼层
mark~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(228882176)

出0入0汤圆

发表于 2014-7-23 08:29:58 | 显示全部楼层
问楼主2个问题:下面的n代表什么?怎么还有负值呢?



下面这个h1n()函数没有定义吧?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
(228878502)

出0入0汤圆

 楼主| 发表于 2014-7-23 09:31:12 | 显示全部楼层
R88 发表于 2014-7-23 08:29
问楼主2个问题:下面的n代表什么?怎么还有负值呢?

1. n代表的是 第n个采样,n为负是因为理想的低通滤波器的逆傅立叶变换是在n小于零的采样点有值。

2. 这个函数在h1n_f1.m里定义的
(228878362)

出0入0汤圆

发表于 2014-7-23 09:33:32 | 显示全部楼层
705060359 发表于 2014-7-23 09:31
1. n代表的是 第n个采样,n为负是因为理想的低通滤波器的逆傅立叶变换是在n小于零的采样点有值。

2. 这 ...

那个里面只有h1n_f1()的定义啊?
(228878162)

出0入0汤圆

 楼主| 发表于 2014-7-23 09:36:52 | 显示全部楼层
R88 发表于 2014-7-23 09:33
那个里面只有h1n_f1()的定义啊?

这句话上面不就调用了这个函数么
h1n = h1n_f1(a1,n);
%when n = 0;h1n = NaN in matlab, we should evaluate the value using the inf rule
h1n(1,(N+1)/2) = a1/pi;
(228877705)

出0入0汤圆

发表于 2014-7-23 09:44:29 | 显示全部楼层
705060359 发表于 2014-7-23 09:36
这句话上面不就调用了这个函数么
h1n = h1n_f1(a1,n);
%when n = 0;h1n = NaN in matlab, we should eval ...

对是调用了,但是我问的是h1n(x,y)这个函数也就是说h1n(1,(N+1)/2)他的表达式是什么,难道和h1n_f1(1,(N+1)/2)是一个意思?matlab的语句我不会,只能照着C的角度去看,不对请指点。
(228872439)

出0入0汤圆

 楼主| 发表于 2014-7-23 11:12:15 | 显示全部楼层
R88 发表于 2014-7-23 09:44
对是调用了,但是我问的是h1n(x,y)这个函数也就是说h1n(1,(N+1)/2)他的表达式是什么,难道和h1n_f1(1,(N+ ...

哈哈 确实按照C的比较难理解啊,h1n是一个数组,这句话的意思是h1n数组里从第1到第(N+1)/2的值被赋值为a1/pi
(228858321)

出0入0汤圆

发表于 2014-7-23 15:07:33 | 显示全部楼层
705060359 发表于 2014-7-23 11:12
哈哈 确实按照C的比较难理解啊,h1n是一个数组,这句话的意思是h1n数组里从第1到第(N+1)/2的值被赋值为 ...

不理解为何要把这几个数组赋予a1/pi呢?还有一个问题通带截至频率是不是就是-3db频率,阻带截至频率就是50db的频率,我看50db正好对应1700,但-3db却不是,不知为何:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
(228857860)

出0入0汤圆

发表于 2014-7-23 15:15:14 | 显示全部楼层
本帖最后由 R88 于 2014-7-23 15:19 编辑
705060359 发表于 2014-7-23 11:12
哈哈 确实按照C的比较难理解啊,h1n是一个数组,这句话的意思是h1n数组里从第1到第(N+1)/2的值被赋值为 ...



你文档里面这块是不是有笔误啊:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
(228856354)

出0入0汤圆

发表于 2014-7-23 15:40:20 | 显示全部楼层
mark,楼主辛苦!
(227489494)

出0入0汤圆

发表于 2014-8-8 11:21:20 | 显示全部楼层
谢谢分享
(227384746)

出0入0汤圆

发表于 2014-8-9 16:27:08 | 显示全部楼层
楼主,你好!知道FIR滤波的汉明窗怎么用吗?Matlab没有学,不知道怎么写,又不知道怎样生成C代码?每个参数都不知道,生成C代码怎样放在我的程序中,汉明窗哪个才是输入信号参数?所有都不懂,现在非常急用,有没有两天掌握这个的捷径啊?只需要掌握汉明窗就好!或者楼主有没有写过,可以共享一份汉明窗功能的C代码或者源程序啊?
(227371449)

出0入0汤圆

 楼主| 发表于 2014-8-9 20:08:45 | 显示全部楼层
R88 发表于 2014-7-23 15:15
你文档里面这块是不是有笔误啊:

您好~实在不好意思,关于您问题的解释,可以看看我po的那本书。
(227371376)

出0入0汤圆

 楼主| 发表于 2014-8-9 20:09:58 | 显示全部楼层
影子流 发表于 2014-8-9 16:27
楼主,你好!知道FIR滤波的汉明窗怎么用吗?Matlab没有学,不知道怎么写,又不知道怎样生成C代码?每个参数 ...

如果有信号系统概念的话两天可以掌握,很简单的。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号 )

GMT+8, 2021-10-23 10:52

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表