MATLAB课程设计报告.docx
《MATLAB课程设计报告.docx》由会员分享,可在线阅读,更多相关《MATLAB课程设计报告.docx(6页珍藏版)》请在冰豆网上搜索。
MATLAB课程设计报告
MATLAB课程设计报告
学号:
姓名:
班级:
教师:
西昌学院
设计名称:
FIR数字高通滤波器
日期:
2012年6月14日
一、设计内容
根据冲激响应的时域特性,数字滤波器可分为无限长冲激响应(IIR)和有限长冲激响应滤波器(FIR),FIR的突出优点是:
系统总是稳定的、易于实现线性相位、允许设计多通带(或多阻带)滤波器,但与IIR相比,在满足同样阻带衰减的情况下需要的阶数较高,滤波器的阶数越高,占用的运算时间越多,因此在满足指标要求的情况下应尽量减少滤波器的阶数。
在自适应处理、数据通信等领域中往往要求信号在传输过程中不能有明显的相位失真,FIR滤波器可以做到线性相位满足此要求。
FIR滤波器实质上是一个分节的延迟线,把每一节的输出加权累加,得到滤波器的输出。
FIR滤波器的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数的问题,设计方法主要有窗函数,频率采样法和等波纹最佳逼近法等。
本设计是运用等波纹最佳逼近法设计一个FIR高通数字滤波器。
二、建立数学模型
1.重构FIR的单位抽样相应
根据频率抽样理论,有N个频率采样点可以唯一确定
,即对
进行IDFT
2.重构系统函数
的频响
将
代入H(Z)表达式可得
其中,为大家所知的内插函数。
分析
可知,当时(采样点)有:
这说明,重构的频响
,在采样上严格等于H(k),而在采样点之间,频响则由加权的内插函数延伸叠加而成。
4.线性相位的约束条件
以h(n)为偶对称,N为奇数的情况进行分析。
1)FIR的频响具有线性相位的一般表达式
当h(n)为偶对称,N为奇数时,则
而且幅度函数H(w)应为偶对称,即
2)采样值H(k)具有线性相位的约束
其中,表示采样值的模(纯标量),
表示其相角。
因此,在采样点上具有线性相位的条件应为:
而且,
必须满足偶对称,即
5、本设计中用到的是等波纹最佳逼近法中的remez函数设计
三、数学模型的解析分析
采用remez算法实现线性相位FIR数字滤波器的等波纹最佳逼近法设计。
与其他设计法相比,其优点是,设计指标相同时,使滤波器阶数最低;或阶数相同时,使通带最平坦,阻带最小衰减最大;通带和阻带均为等波纹形式,最适合设计片段常数特性的滤波器。
其调用格式如下:
b=remez(N,f,m,w,’ftype’)
其中,w和ftype可默认。
b为滤波器系数向量,调用参数N,f,m的含义与函数fir2中类同,但这里有一点不同,期望逼近的频幅响应值位于f(k)与f(k+1)(k为奇数)之间的频段上,而f(k+1)与f(k+2)之间为无关区。
w为加权向量,其长度为f的一半。
W(k)为对m中第k个常数片段的逼近精度加权值,w值越大逼近精度越高。
rtype用于指定滤波器类型。
Remezord函数用于估算FIR数字滤波器的等波纹最佳一致逼近设计的最低阶数N,从而使滤波器在满足指标的前提下造价最低。
基本调用格式如下:
[N,fo,mo,w]=remezord(f,m,dev,Fs)
其返回参数供remez函数使用。
设计的滤波器可以满足由参数f,m,dev和Fs指定的指标。
F和m与remez中所用的类似,这里f可以是模拟频率(Hz)或归一化数字频率,但必须以0开始,以Fs/2(用归一化频率时为1)结束,而且其中省略了0和Fs/2两个频点。
Fs为采样频率,省略时默认为2Hz。
dev为各逼近频段允许的幅频响应偏差(波纹振幅)。
remez函数可直接调用remezord返回的参数,使用格式如下:
b=remez(N,fo,mo,w)。
四、计算机仿真模型的建立(编程)
用remez函数设计高通滤波器。
观察等波纹逼近法中加权系数w()及滤波器阶数N的作用和影响。
期望逼近的滤波器通带为[3/4,1],阻带为[0,23/32]。
在滤波器设计中,技术指标越高,实现滤波器的阶数也就越高。
在remez函数调用格式b=remez(N,f,m,w)中,f=[0,3/4,23/32,1],m=[0,0,1,1].其余参数分三种情况进行设计:
(1)N=30,w=[1,1];
(2)N=30,w=[1,5](3)N=60,w=[1,1]。
程序如下:
%
%用remez函数设计高通滤波器
clear;closeall
f=[0,23/32,3/4,1];m=[0,0,1,1];
N1=30;w1=[1,1];hn1=remez(N1,f,m,w1);%情况
(1)
k=[0:
1023]*2/1024;
Hw1=fft(hn1,1024);
subplot(311);plot(k,20*log10(abs(Hw1)));%求出其幅频特性
axis([0,1,-40,5]);gridon;%只画出正半轴频谱
xlabel('w/pi');ylabel('Magnitude(dB)');%标注
title('N1=30,w1=[1,1]');
N2=30;w2=[1,5];hn2=remez(N2,f,m,w2);%情况
(2)
Hw2=fft(hn2,1024);%求出其幅频特性
subplot(312);plot(k,20*log10(abs(Hw2)));
axis([0,1,-40,5]);gridon;%只画出正半轴频谱
xlabel('w/pi');ylabel('Magnitude(dB)');%标注
title('N2=30,w2=[1,5]');
N3=60;w2=[1,1];hn3=remez(N3,f,m,w2);%情况(3)
Hw3=fft(hn3,1024);%求出其幅频特性
subplot(313);plot(k,20*log10(abs(Hw3)));
axis([0,1,-40,5]);gridon;%只画出正半轴频谱
xlabel('w/pi');ylabel('Magnitude(dB)');%标注
title('N3=60,w1=[1,1]');
五、执行仿真和结果分析
由图可见,w较大的频段逼近精度越高;w越小的频段逼近精度越低。
N较大时逼近精度越高;N越小时逼近精度越低。
六、设计体会与建议
为了这次课程设计,我自学了数字信号处理领域中窗函数的有关知识。
实际中遇到的离散时间信号总是有限长的,因此不可避免地要遇到数据截断问题。
而在信号处理中,对离散序列的数据截断是通过序列与窗函数相乘来实现的。
而且,有关滤波器的设计、功率谱估计等基本概念也要用到窗函数。
课程设计对经常用到的下面8个窗函数:
矩形窗函数、三角窗函数、巴特利特窗函数、汉宁窗函数、海明窗函函数、布莱克曼窗函数、凯塞窗函数以及切比雪夫窗函数,先是做了基本概念上的阐释,然后对其MATLAB实现函数做出了说明,最后又结合具体的实例,对这些窗函数的频域特性等进行了介绍。
通过这次学习,我对FIR数字滤波器窗函数的基本知识及其实际应用的技巧有了基本的了解,还提高了自己对软件MATLAB的运用能力,收获颇多。
但在做的过程中也遇到了不少的麻烦,通过不断的努力解决了问题,完成了报告。
设计成绩:
教师签名:
年月日