matlab之经典数字滤波函数介绍

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

matlab 之经典数字滤波函数介绍 南京理工大学仪器科学与技术专业 谭彩铭

2010-3-12

1 butter 函数

设计一个9阶高通Butterworth 数字滤波器,截止频率为300Hz

1

图2

下面看一看freqz 函数

例如对离散系统传递函数121

2

(1)(2)(3)()(1)(2)(3)b b z b z H z a a z

a z

----++=

++

freqz 函数的的主要计算环节是计算()s

jw T H e

编写下图所示程序验证之

图3

图4

可见h1和h相等

图2中出现小于-360度是否表达其他不同的意义?-361度和-1度有什么区别吗?对于正弦波应该是一样的,故理论上说应该没有区别。

butter函数的原理是什么?

顾名思义,butter函数的原理是基于Butterworth滤波器。

这里始终要带着这个问题去研究,滤波系数本身有什么特性竟然可使低频的滤掉,高频的通过,其实这里想要寻找的是敏捷控程,理论上这个问题的答案已经很成熟。

2 impinvar函数

用冲击响应不变法数字仿真模拟Butterworth滤波器,程序如下。

图5

3 bilinear 函数

用双线性变换法数字仿真模拟Butterworth 滤波器,程序如下。

图6

4 fir1函数

由理想滤波器幅频特性反推滤波系数,得出来的系数数量是无穷多的。故可采用加窗的方法舍去部分,留下有限的滤波系数数量,使仍能基本达到需要的滤波效果。

7

图8

5 fir2函数

fir2函数的基本原理同fir1函数,它的功能更进一层,可以设计任意形状的频率响应图形。

9

图10、

图9中,w 如果是角频率值,将w 转换成频率值时,应该是将w 除以2*pi ,但是程序中为什么除以的是pi 呢?

准确地说,图9中的w 并非是角频率值,而是频率值,freqz 函数调用时若没有加入采样率参数,其返回的频率值的范围是0~pi 。

6 fir1函数补充

对调用方式b=fir(n,wn),wn 的取值范围是(0,1),其中1对应于0.5fs (fs 为采样率)。

11

图12

对图11中程序,1对应0.5fs ,那么0.45对应0.45*0.5*fs=22.5Hz ,0.35对应0.35*0.5*fs=17.5Hz ,和图12吻合。但是实际应用时,我们知道采样率,知道需要的通带,我们需要的是直接的答案。假设采样率为100Hz ,现在要设计的带通滤波器的带宽是[20Hz ,25Hz],对应图11中的fc 我们该怎么取值,显然应该是fc=[20 25]/(0.5*fs)。如下图程序所示。

13

图14 下列程序是较为综合的一个程序

图15

图16

图17

由图17中,可得到信号频率为5Hz 时的衰减系数约为0.25,1020(0.25)12log =-,和图16基本吻合。

7 filter 函数

Filter data with an infinite impulse response (IIR) or finite impulse response (FIR) filter 对y = filter(b,a,x),y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb) - a(2)*y(n-1) - ... - a(na+1)*y(n-na)

8 filtfilt 函数

Zero-phase digital filtering

filtfilt函数的计算方式同filter函数一样,不同之处在于做了零相位处理。下图所示程序就可以清楚地看到这点区别。

下面研究下,它的零相位处理是如何做到的?

直观的思维是先执行filter函数,在做平移即可。那么matalb中filtfilt函数是如何实现的呢?此滤波是对信号x做前向和反向处理。

9 fftfilt函数

此函数基于FFT和重叠相加法的FIR滤波。

相关文档
最新文档