大毕设-MATLAB-滤波器的实现 - yu_jianchi

大毕设-MATLAB-滤波器的实现

在工程实际中遇到的信号经常伴有噪声,为了消除或减弱噪声,提取有用信号,必须进行滤波,能实现滤波功能的系统称为滤波器。严格地讲,滤波器可以定义为对已知的激励提供规定响应的系统,响应的要求可以在时域或频域内给定。滤波器的功能主要由其系统函数决定。滤波技术在通信测量、数据采集、控制系统及电力系统等领域得到了广泛的应用。滤波器的设计在这些领域中必不可少, 甚至是至关重要的环节, 其优劣将直接影响整个系统的性能。滤波器设计的关键是找到一个稳定可实现的逼近函数, 其频率特性满足所需滤波器的所有要求。虽然目前已有多种成熟的逼近函数(矩形窗等), 然而不论哪种逼近函数都需要进行非常繁琐的计算, 而且通过综合设计确定实现这一传递函数的电路及其元件值的过程也很复杂。MATLAB 中提供了丰富的用于模拟滤波器设计和数字滤波器设计的函数, 通过编程可以很容易实现低通、高通、带通、带阻滤波器, 并能画出滤波器的幅频、相频特性曲线。

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;

发表于 2017-01-05 15:42 yu_jianchi 阅读(603) 评论(0) 编辑收藏举报