MATLAB设计滤波器优点:
(1) 高效的数字计算方法及符号计算功能,使用户从繁杂的数学运算分析中解脱出来。
(2) 完备的图形处理功能,实现计算结果和编程的可视化。
(3) 友好的用户界面及接近数学表达式的自然化语言,使学习者易于学习和掌握。
(4) 功能丰富的应用工具箱,为用户提供了大量方便而实用的处理工具。
(5) Simulink动态建模与仿真系统,丰富而功能强大的器件库,提供了实时方便的仿真手段。
设计fir滤波器的一般步骤:
窗函数法设计及MATLAB 实现
FIR 滤波器目前常用的设计方法有窗函数法和频率采样法,窗函数法是从时域进行设计,而频率采样法是从频域进行设计。窗函数法由于简单、物理意义清晰,因而得到了较为广泛的应用。窗函数法设计的基本思想是:首先根据技术指标要求,选取合适的阶数N和窗函数的类型,使其幅频特性逼近理想滤波器幅频特性。其次,因为理想滤波器的是无限长的,所以需要对进行截断,数学上称这种方法为窗函数法[1]。
其中是希望逼近的滤波器的单位脉冲响应,是希望逼近的滤波器的幅频特性,是所设计的滤波器的单位脉冲响应,是窗函数。在截断的过程中要保证FIR滤波器的稳定性与线性相位的特性。由于截断效应使所设计滤波器的幅频特性存在误差,称之为吉布斯效应。最后,验证所设计的滤波器是否满足要求,若不满足,重新设计。常用的窗函数有矩形窗、三角窗、汉宁窗和凯塞窗等。窗函数的选择一般要满足以下三个条件[7]:
(1)具有较低的旁瓣幅度,尤其是第一旁瓣幅度。
(2)旁瓣幅度下降速度要快,以利于增加阻带衰减。
(3)主瓣宽度要窄,以获得较陡的过渡带。
FIR 滤波器的设计任务是选择有限长度的 h(n), 使函数H(ejω)满足技术要求。本文将针对一个含有 1000Hz 和 2000Hz 的正弦波信号, 设计一个FIR低通滤波器。参数要求: 采样频率 FS=8000Hz, 通带为 0~1200Hz, 阻带1600~4000Hz, 通带波纹为 1%,阻带波纹 10%。下面将利用程序设计法, SPTool 设计法和 FDA-Tool 设计法对上述滤波器进行设计。
3.2.3程序设计法
在 Matlab 下设计 FIR 滤波器有多种函数, 如 fir1, fir2, firls, remez, fircls, firclsl, cremez, firrcos 。下面以 remez 函数设计滤波器[8]。
程序如下:
Fs=8000; %采样频率 f=[1200 1600]; a=[1 0]; dev=[0.01 0.1]; [n,fo,ao,w]=remezord(f,a,dev,Fs); %估计滤波器的参数 b=remez(n,fo,ao,w); %用 remez 函数设计滤波器 freqz(b,1,1024,Fs); %滤波器的频率响应, 如图 1 t=(0:100)/Fs; x=sin(2*pi*t*1000)+sin(2*pi*t*2000); %设置输入信号 x x1=filter(b,1,x); %对信号 x 进行滤波,得输出信号 x1 figure subplot(211);plot(t,x);grid; subplot(212);plot(t,x1);grid;