基于MATLAB的FIR滤波器的设计及应用(信号去噪)
数字信号处理课程设计报告书
课题名称基于MATLAB的FIR滤波器的设计及应用(信号去噪)姓 名陈君诚学 号院、系、部电气工程系专 业电子信息工程指导教师刘鑫淼
2013年 6月28日基于MATLAB的FIR滤波器的设计及应用(信号去噪) 陈君诚
一、设计目的
1.学会MATLAB的使用,掌握MATLAB的程序设计方法;
2.掌握数字信号处理的基本概念、基本理论和基本方法;
3. 在MATLAB环境下产生噪声信号;
4.掌握MATLAB设计FIR数字滤波器的窗函数设计方法;
5.学会用MATLAB对信号进行分析和处理。
二、设计要求
1.噪声信号的频谱分析
2.设计数字滤波器和画出频率响应
利用窗函数的方法和最佳逼近法设计FIR滤波器;最后,利用MATLAB中的函数freqz画出各滤波器的频率响应。
3.用滤波器对噪声信号进行滤波
4.比较几种滤波器去滤波前后噪声信号的波形及频谱
三、设计原理3.1 窗函数设计原理 如果所希望的滤波器的理想的频率响应函数为,则其对应的单位脉冲相应为:
(3.1)
窗函数设计法的基本原理是用有限长单位脉冲响应序列逼近。由于往往是无限长序列,而且是非因果的,所以用窗函数将截断,并进行加权处理,得到:
(3.2)
就作为实际设计的FIR数字滤波器的单位脉冲响应序列,其频率响应函数为
(3.3)
式中,N为所选窗函数的长度。
由此可知,用窗函数法设计的滤波器性能取决于窗函数的类型及窗口长度N的取值。设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N 。各种类型的窗函数可达到的阻带最小衰减和过渡带宽度见表1。
表1 各种窗函数的基本参数
窗函数旁瓣峰值幅度/dB过渡带宽阻带最小衰减/dB矩形窗-134π/N-12三角形窗-258π/N-25汉宁窗-318π/N-44哈明窗-418π/N-53不莱克曼窗-5712π/N-74凯塞窗(α=7.865)-5710π/N-80
这样选定窗函数类型和长度N之后,求出单位脉冲响应,并按照式(3.3)求出。是否满足要求,要进行演算。一般在尾部加零使长度满足2的整数次幂,以便用FFT计算。如果要观察细节,补零点数增多即可。如果不满足要求,则要重新选择窗函数类型和长度N ,再次验算,直至满足要求。
3.2 最佳逼近法
等波纹最佳逼近法是一种优化设计法,它克服了窗函数设计法和频率采样法的缺点,使最大误差(即波纹的峰值)最小化,并在整个逼近频段上均匀分布。用等波纹最佳逼近法设计的FIR数字滤波器的幅频响应在通带和阻带都是等波纹的,而且可以分别控制通带和阻带波纹幅度。这就是等波纹的含义。最佳逼近是指在滤波器长度给定的条件下,使加权误差波纹幅度最小化。与窗函数设计法和频率采样法比较,由于这种设计法使滤波器的最大逼近误差均匀分布,所以设计的滤波器性能价格比最高。阶数相同时,这种设计法使滤波器的最大逼近误差最小,即通带最大衰减最小,阻带最小衰减最大;指标相同时,这种设计法使滤波器阶数最低。
如果要求线性相位特性,则还必须满足
(3.4)
根据上式中的正、负号和长度N的奇偶性又将线性相位FIR滤波器分成四类。要根据所设计的滤波特性正确选择其中一类,例如,要设计线性相位低通特性,可以选择这一类,而不能选择这一类。
四、主程序框图
五、程序设计
function xt=xtg;
N=1000;
Fs=1000;T=1/Fs;Tp=N*T;
t=0:T:(N-1)*T;fc=Fs/10;f0=fc/10;
mt=cos(2*pi*f0*t);
ct=cos(2*pi*fc*t);
xt=mt.*ct; % 相成产生单频调幅信号
nt=2*rand(1,N)-1; % 产生随机噪声
subplot(4,4,1);plot(t,xt);title('未加噪声的信号')
%设计高通滤波器hn,用于滤除噪声nt中的低频成分,生成高通噪声
fp=150;fs=200;Rp=0.1;As=70;
fb=[fp,fs];m=[0,1];
dev=[10^(-As/20),(10^(Rp/20)-1)/(10^(Rp/20)+1)];
[n,fo,mo,W