Matlab课程设计任务书通信1002.docx
《Matlab课程设计任务书通信1002.docx》由会员分享,可在线阅读,更多相关《Matlab课程设计任务书通信1002.docx(18页珍藏版)》请在冰豆网上搜索。
![Matlab课程设计任务书通信1002.docx](https://file1.bdocx.com/fileroot1/2022-11/26/5903e782-6758-48dd-ab36-313c2a9074c8/5903e782-6758-48dd-ab36-313c2a9074c81.gif)
Matlab课程设计任务书通信1002
Matlab课程设计任务书
学生姓名:
xxx专业班级:
通信1002
指导教师:
徐文君工作单位:
信息工程学院
题目:
利用MATLAB仿真软件系统结合频率采样法设计一个数字高通FIR滤波器
基础强化训练目的
1.理论目的
《数字信号处理》课程设计的目的之一是为了巩固课堂理论学习,并能用所学理论知识正确分析数字信号处理的基本问题和解释数字信号处理的基本现象。
2.实践目的
《数字信号处理》课程设计的目的之二是通过设计具体的各种滤波器掌握滤波器设计方法和步骤。
训练内容和要求
利用MATLAB仿真软件系统结合频率采样法设计一个数字高通IIR滤波器在数字信号处理平台上(PC机﹑MATLAB仿真软件系统和TC++编程环境)进行软件仿真设计,并进行调试和数据分析。
课程设计题目由指导教师提供,每人隶属一组完成任务,每组完成的内容不能雷同(按学号分组)
初始条件
1MATLAB软件
2数字信号处理与图像处理基础知识
时间安排:
第21周,安排任务(鉴3-204,7月14日)
第21周,仿真设计(鉴主13楼计算机实验室)
第21周,完成(答辩,提交报告,演示)
指导教师签名:
2013年1月4日
系主任(或责任教师)签名:
年月
目录
摘要3
Abstract3
1设计任务及要求4
2MATLAB概述5
2.1MATLAB的介绍5
2.2基本功能5
2.3应用5
3.设计原理6
3.2频率抽样法的基本原理7
4总体设计流程10
5相关计算11
6.结果验证12
7用MATLAB仿真工具FDATOOL设计13
8分析和总结15
9小结及体会16
参考文献16
附一17
附二18
摘要
数字滤波是语音和图象处理、模式识别、频谱分析等应用中的一个基本处理算法,数字滤波技术是信号消噪的基本方法。
根据噪声频率分量的不同,可选用具有不同滤波特性的数字滤波器。
当噪声的频率高低于信号的频率时,就应该选用高通滤波器。
本设计采用了频率抽样法设计的FIR高通数字滤波器,其目的是为了让中高频率的信号通过,而且利用频率抽样法的优点是可以在频域直接设计,并且适合最优化设计。
FIR滤波器为有限长冲激响应滤波器,因其在线性相位特性方面具有独特的优点,因此也越来越受到广泛的重视。
关键词:
FIR数字滤波器频率抽样高通
Abstract
Thedigitalfilteristhevoiceandimageprocessing,patternrecognition,spectrumanalysisintheapplicationofabasicalgorithm,Whenthenoiseofhighfrequencybelowthesignalfrequency,shouldchooseahigh-passfilter.ThisdesignusesthefrequencysamplingdesignmethodofFIRhighpassdigitalfilter,itspurposeistomakethehighfrequencysignalthrough,andbyusingthefrequencysamplingmethodcanbedirectlyinthefrequencydomaindesign,andissuitableforoptimizationdesign.FIRfilterforfiniteimpulseresponsefilters,duetoitslinearphasecharacteristichasuniqueadvantages,soitattractsmoreandmoreattention.
Keyword:
FIRdigitalfilterFrequencysamplingHighpass
1设计任务及要求
用频率抽样法实现线性相位数字FIR高通滤波器,用一路正弦序列(数字频率为0.82)叠加白噪声产生的数据作为输入。
(1)截止频率为pi/3,采样点数23;
(2)截止频率为pi/2,抽样点数56。
并比较各滤波器的性能指标。
2MATLAB概述
2.1MATLAB的介绍
MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分
2.2基本功能
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用
2.3应用
MATLAB产品族可以用来进行以下各种工作:
●数值分析
●数值和符号计算
●工程与科学绘图
●控制系统的设计与仿真
●数字图像处理技术
●数字信号处理技术
●通讯系统设计与仿真
●财务与金融工程
MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题。
3.设计原理
3.1数字滤波器
数字滤波器是对数字信号实现滤波的线性时不变系统。
数字滤波实质上是一种运算过程,实现对信号的运算处理。
输入数字信号(数字序列)通过特定的运算转变为输出的数字序列,因此,数字滤波器本质上是一个完成特定运算的数字计算过程,也可以理解为一台计算机。
描述离散系统输出与输入关系的卷积和差分方程只是给数字信号滤波器提出运算规则,使其按照这个规则完成对输入数据的处理。
时域离散系统的频域特性:
(1)
其中
、
分别是数字滤波器的输出序列和输入序列的频域特性(或称为频谱特性),
是数字滤波器的单位取样相应的频谱,又称为数字滤波器的频域响应。
输
入序列的频谱
经过滤波后
,因此,只要按照输入信号频谱的特点和处理信号的目的,适当选择
,使得滤波后的
满足设计的要求,这就是数字滤波器的滤波原理。
数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器。
IIR数字滤波器的特征是,具有无限
续时间冲级响应,需要用递归模型来实现,其差分方程为:
3.2频率抽样法的基本原理
频率采样法是从频域出发,对给定的理想滤波器的频响
进行N等间隔采样,即
然后以此Hd(k)作为实际FIR滤波器的频率特性采样值H(k),即令:
由DFT定义,可以用这个N个频域的采样值
来唯一确定FIR的单位脉冲响应
,即:
(4)
下面对设计出的滤波器频率响应特性进行分析。
由频域采样定理中的内插公式可以知道,利用这N个频域采样值
同样可以求得FIR滤波器的频率响应
,这个
将逼近理想滤波器的频响
。
的内插公式为:
(5)
式中:
是内插函数。
(6)
把式
代入
,化简后可得:
(7)
从式
可以看到,在各频率采样点上,设计的滤波器,实际的频率响应严格地与理想滤波器的频率响应数值相等,即
。
但是在采样点之间的频率响应是由各采样点的加权内插函数叠加而形成的,因而有一定的逼近误差。
该误差大小取决于理想频率响应的开关,理想频响特性变化越平缓,内插值越接近理想值。
逼近误差越小;反之,如果采样点之间的理想频响特性变化越陡,则内插值与理想值之间的误差越大,因而在理想滤波器不连续点的两边,就会产生尖峰,而在通带和阴带就会产生波纹。
频率抽样法设计的FIR高通数字滤波器,其目的是为了让中高频率的信号通过,而通过频率采样法的优点是可以在频域直接设计,并且适合最优化设计;缺点是采样频率只能等于2π/N的整数倍,因而不能确保截止频率ωc的自由取值,要想实现自由地选择截止频率,必须增加采样点数N,但这又使计算量加大。
下图是通过本实例对FIR滤波器滤波前后进行的MATLAB仿真对比。
图
(1)
图
(2)
4总体设计流程
图(3)
5相关计算
(1)根据阻带最小衰减as,选择过渡带采样点的个数m。
(2)确定过渡带宽度Bt,估算频率采样点数(即滤波器长度)N。
如果增加m个过渡带采样点,则过渡带宽度近似变成(m+1)2π/N。
当N确定是,m越大,过渡带越宽。
如果给定过渡带宽度Bt,则要求(m+1)2π/N≤Bt,滤波器长度N必须满足如下估算公式:
N≥(m+1)π/Bt
(3)构造一个希望逼近的频率响应函数:
Hd(ejω)=Hdg(ω)ejθ(ω)(8)
设计标准型片段常数特性的FIR数字滤波器时,一般构造幅度特性函数Hdg(w)相应的理想频响特性,且满足下表的对称性要求。
m
1
2
3
as
14~54dB
65~75dB
85~95dB
其中:
as时阻带最小衰减,过渡带采样点的个数m。
(4)按照
K=0,1,2,…,N-1
K=0,1,2,…,N-1
并加入过渡带采样。
过渡带采样值可以设置为经验值,或用累试法确定,也可以采用优化算法。
(5)对
进行N点IDFT,得到第一类线性相位FIR数字滤波器的单位脉冲响应:
n=0,1,2,…,N-1(9)
(6)检验设计结果。
如果阻带最小衰减未达到指标要求,则要改变过渡带采样值,直到满足指标要求为止。
如果滤波器边界频率未达到指标要求,则要微调Hdg(w)的边界频率。
6.结果验证
(1)当采样点数N<50时,过渡带采一个点Y
输入点数N=23
输入截止频率wc=π/3
输入过渡带采样值Y=0.2501
结果:
图(4)
通带最大衰减ap=-0.8076dB
阻带最小衰减as=42.7296dB
(2)当采样点数N≥50时,过渡带采两个点Y,Y1
输入点数N=61
输入截止频率wc=π/2
输入过渡带采样值Y=0.1112
输入过渡带采样值Y1=0.5628
结果:
图(5)
通带最大衰减ap=-0.2906dB
阻带最小衰减as=50.0163dB
7用MATLAB仿真工具FDATOOL设计
fdatool(filterdesign&analysistool)是matlab信号处理工具箱里专用的滤波器设计分析工具。
fdatool可以设计几乎所有的基本的常规滤波器,包括fir和iir的各种设计方法。
它操作简单,方便灵活。
进入fdatool工具箱在matlab的命令行上输入fdatool,回车,如图4所示:
图(6)
fdatool界面总共分两大部分,一部分是designfilter,在界面的下半部,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。
designfilter部分主要分为:
filtertype(滤波器类型)选项,包括lowpass(低通)、highpass(高通)、bandpass(带通)、bandstop(带阻)和特殊的fir滤波器。
designmethod(设计方法)选项,包括iir滤波器的butterworth(巴特沃思)法、chebyshevtypei(切比雪夫i型)法、chebyshevtypeii(切比雪夫ii型)法、elliptic(椭圆滤波器)法和fir滤波器的equiripple法、least-squares(最小乘方)法、window(窗函数)法。
filterorder(滤波器阶数)选项,定义滤波器的阶数,包括specifyorder(指定阶数)和minimumorder(最小阶数)。
在specifyorder中填入所要设计的滤波器的阶数(n阶滤波器,specifyorder=n-1),如果选择minimumorder则matlab根据所选择的滤波器类型自动使用最小阶数。
frenquencyspecifications选项,可以详细定义频带的各参数,包括采样频率fs和频带的截止频率。
它的具体选项由filtertype选项和designmethod选项决定
在Matlab命令窗口输入FDATool命令,按确定调出FDATool界面。
在ResponseType下选择滤波器的类型为Highpass。
在DesignMethod下选择设计方法为FIRequiripple,在FilterOrder选择minimumorder,在frenquencyspecifications里输入wstop0.11和wpass0.21,在MagnituideSpecifications里输入astop50,执行后的图如图3.2.2.1所示:
图(7)
8分析和总结
频率采样法设计滤波器最大的优点是直接从频率域进行设计,比较直观,也适合于设计具有任意幅度特性的滤波器。
缺点就是边缘频率不易控制。
如果增加采样点数N,对边缘频率有好处,但会加大滤波器的成本。
因此,它适合于窄带滤波器的设计。
提高阻带衰减最有效的方法是在频响间断点附近区间内插入一个或几个过渡采样点,使不连续点变成缓慢过渡,从而控制阻带波纹幅度,这样,虽然加大了过渡带,但明显增大了阻带衰减。
这种用加宽过渡带换取阻带衰减的方法是很有效的。
且在过渡带采一个点Y=0.3904时为过渡带优化设计,当N加大到N=65时,采用两个过渡点,Y=0.1065,Y1=0.5986时为过渡带优化设计。
所设计的滤波器在阻带边界频率附近的衰减最小,距阻带边界频率越远,衰减越大。
所以,在阻带边界频率附近的衰减刚好达到设计指标要求,则阻带中其他频段的衰减就有很大富余量。
9小结及体会
本实验采用频率采样法设计FIR数字高通滤波器,刚开始做的时候以为很简单,也就是一天的事,可实际上我却花了不止三天。
我对matlab的认识连入门都达不到,加上数字信号处理学的一知半解,看到别人写的程序我都看不懂,根本不可能自己写程序。
所以我花了很多时间上网查资料,请教同学,看《数字信号处理》及matlab相关教程,终于写了出来。
MATLB仿真结果验证了用频率采样法设计FIR高通数字滤波器这一数字信号处理中的基本理论,有助于我们深入理解并掌握这一重要的FIR滤波器设计方法。
需要强调的是,频率采样法是从频域出发直接设计滤波器的,而窗函数法是从时域出发设计滤波器的,两种设计方法各有优缺点。
窗函数法设计FIR数字滤波器是傅里叶变换的典型运用,而频率采样法设计的指导思想是频域采样定理及内插公式,其阻带衰减的改善是通过增加过渡采样点实现的,同时为保证过渡带宽的不变,滤波器的采样点数也要相应增加,计算复杂度也随之成倍增加,这就要求在用频率采样法设计FIR滤波器时,要综合考虑阻带衰减和滤波器长度的要求,从而达到设计的最优化。
通过本次综合课程设计,对大学以来学的相关知识的串接让我又收获了很多,也知道了自己还有很多的不足,在以后的学习中还有待加强。
参考文献
教材:
VinayK.Ingle主编:
《数字信号处理及其MATLAB实现》,电子工业出版社,1998年出版。
参考书:
SanjitK.Miltra编著:
《DigitalSignalProcessingLaboratoryUsingMatlab》,McGraw-Hill出版社,2000年出版。
参考书:
高西泉,丁玉梅.《数字信号处理》(第3版).西安:
西安电子科技大学出版社,2008
参考书:
王宏.《MATLAB6.5及其在信号处理中的应用》.北京:
清华大学出版社,2004
附一
本科生课程设计成绩评定表
姓名
性别别
专业、班级
课程设计题目:
课程设计答辩或质疑记录:
成绩评定依据:
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
2013年1月4日
附二
部分程序
%设置参数
N=input('输入采样点数N=');
N=N+mod(N+1,2);%使N为奇数
wc=input('输入截止频率wc=');
Y=input('输入过渡带采样值且(0≤Y≤1)Y=');
Y1=input('输入过渡带采样值且(0≤Y≤1)Y1=');
Ns=fix(wc/(2*pi/N));%Ns+1为阻带[0,wc]上的采样点数
Np=N-2*Ns-1;%Np为通带[wc,2*pi-wc]
v=1:
N;
%FIR高通滤波器
Hk=[zeros(1,Ns+1),ones(1,Np),zeros(1,Ns)];%幅度采样向量偶对称
ifN<50
Hk(Ns+2)=Y;Hk(N-Ns)=Y;
elseN>=50
Hk(Ns+2)=Y;Hk(N-Ns)=Y;
Hk(Ns+3)=Y1;Hk(N-Ns-1)=Y1;
end
subplot(3,2,1);%绘制频率样本函数
plot(v,Hk,'k*');title('幅度样本');ylabel('Hk');
axis([0,fix(Ns+Np-1),-0.1,1.1]);
thetak=-pi*(N-1)*(0:
N-1)/N;%相位采样向量θ(k)=-(N-1)*pi*k/N,0≤k≤N-1
Hdk=Hk.*exp(j*thetak);%构造频率采样向量Hd(k)
hn=real(ifft(Hdk));%hn=IDFT[H(k)],real只取实部,忽略计算误差引起的虚部
subplot(3,2,2);%画单位脉冲响应函数
stem(v,hn,'k');
title('单位脉冲响应');ylabel('h(n)');
axis([0,fix(N*1.1),min(hn)*1.1,max(hn)*1.1]);
Hw=fft(hn,1024);%计算频率响应函数:
DFT[h(n)]
wk=2*pi*[0:
1023]/1024;Hgw=Hw.*exp(j*wk*(N-1)/2);%计算幅度响应函数Hg(w)
subplot(3,2,3);
plot(wk./pi,abs(Hgw),'k');xlabel('\omega/\pi');ylabel('Hd(w)');
title('幅度响应1');axis([0,1,-0.1,1.3]);subplot(3,2,4);
plot(wk./pi,20*log10(abs(Hgw)),'k');
title('幅度响应2'),xlabel('\omega/\pi');ylabel('Hd(w)/dB');
axis([0,1,-80,10]);
%计算通带最大衰减Rp和阻带最小衰减Rs
Rp=-max(20*log10(abs(Hgw)))
hgmin=min(real(Hgw));
Rs=-20*log10(abs(hgmin))
%输入信号
n=0:
999;%1000个采样点
s=8*sin(0.82*pi*n);%正弦序列
x=s+randn(size(n));%叠加高斯白噪声的正弦序列
X=fft(x);subplot(3,2,5);plot(20*log10(abs(X)));
title('滤波前的信号频谱波形');xlabel('w');ylabel('X/dB');
axis([0,500,0,100]);s=filter2(hn,x);subplot(3,2,6);
s1=fft(s);plot(20*log10(abs(s1)));
title('滤波后信号频谱波形');xlabel('w');ylabel('X/dB');
axis([0,500,0,100]);