DSP课程设计指导书用.docx
《DSP课程设计指导书用.docx》由会员分享,可在线阅读,更多相关《DSP课程设计指导书用.docx(21页珍藏版)》请在冰豆网上搜索。
DSP课程设计指导书用
数字信号处理
课程设计
指
导
书
信息与通信工程学院
一、数字信号处理课程设计目的
通过课程设计,主要达到以下目的:
1、使学生进一步掌握数字信号处理课程的基本理论、基本方法和基本技术。
2、使学生增进对MATLAB的认识,利用MATLAB加深对理论知识的理解。
3、使学生了解和掌握使用MATLAB的应用过程和方法,为以后的设计打下良好基础。
4、通过课程设计,培养学生能根据设计要求,进行理论知识分析、设计方法总结、典型实例设计等方面的设计综合能力。
二、数字信号处理课程设计说明及要求
1、课程设计选题方面,学生可以从老师的命题中任选一题进行课程设计;也可自已命题,但必须要经过指导教师审查同意后方可进行设计。
2、课程设计以MATLAB软件为设计工具,要求学生能熟练掌握MATLAB软件的使用方法。
3、课程设计主要包括理论分析、方法总结、典型实例设计等三方面内容。
要求学生根据设计要求,进行理论知识分析,归纳设计方法,选择好典型实例并进行设计。
实例设计要求有源程序,对设计结果或数据波形要进行分析论证。
4、要写出详细的设计报告。
要求学生能独立写出文理通顺的、有理论根据的、实事求是的、科学严谨的课程设计报告。
字数不少于三千字,发现雷同或类同现象的各方都一律重做,且成绩不能评定为良好及以上等级。
三、数字信号处理课程设计过程
课程设计包括理论和实践两个方面。
学生对设计任务进行分析、设计、制作与调试等工作是课程设计的实践部分;撰写课程设计的总结报告,即将分析、设计、制作和调试过程进行全面总结,是把实践内容提升到理论高度的过程,是课程设计的理论部分。
通过课程设计报告,可以培养学生的理论学习能力、资料查阅能力、技术归纳能力、结论分析能力、论文撰写能力和工作总结能力。
课程设计大致包括以下几个环节:
1、选择题目:
根据自己掌握的知识和具备的能力,选择合适的题目。
2、明确任务:
根据选择的题目,进一步明确设计任务或技术指标。
3、理论分析:
从理论方面分析和解决设计任务。
4、技术实现:
从实践方面达到或实现理论分析。
5、得出结论:
列出程序结果或数据波形,得出设计结论。
6、设计总结:
结合以上设计环节,写出设计报告,总结经验方法,得出设计结论,概括成果意义等等,指出存在的问题或努力的方向。
四、数字信号处理课程设计题目
组次
题目
设计
条件
实习
要求
上课
节数
考核环节
与措施
1
离散系统的时域分析及MATLAB实现
设计报告
2
离散系统的频域分析及MATLAB实现
设计报告
3
序列的Z变换与DFT的关系研究
设计报告
4
时域采样理论研究及MATLAB实现
设计报告
5
频域采样理论研究及MATLAB实现
设计报告
6
基于MATLAB的采样定理仿真实现
设计报告
7
卷积运算及算法实现
设计报告
8
离散系统的零极点对频率响应的影响分析
设计报告
9
直接DFT运算的算法分析及MATLAB实现
设计报告
10
按时间抽取的DFT快速算法分析及MATLAB实现
设计报告
11
按频率抽取的DFT快速算法分析及MATLAB实现
设计报告
12
信号的频谱分析及MATLAB实现
设计报告
13
级联型数字滤波器的结构分析与实现
设计报告
14
并联型数字滤波器的结构分析与实现
设计报告
15
IIR数字滤波器设计及MATLAB实现
设计报告
16
FIR数字滤波器设计及MATLAB实现
设计报告
17
基于MATLAB的音频信号处理技术实现
设计报告
18
基于MATLAB的噪声抑制技术实现
设计报告
五、对课程设计报告的要求
课程设计报告的封面一律按照范文规定的模版格式,课程设计报告的内容主要包括设计题目、设计要求、设计原理、设计方法、技术实现、设计结果、数据波形、收获与体会和参考文献等项目。
这些项目多少与格式不作统一限制,但要求用A4纸打印。
电子文档以学生的一卡通学号姓名为文件名(如:
12345678910张三),发送到hnistcai@邮箱。
课程设计的选题于本学期第16周之前完成,课程设计工作在下学期开学前完成,课程设计报告在下学期开学第一同之内完成。
递交课程设计报告的最后时间是下学期第2周星期二下午。
六、参考资料
[1]陈怀琛,吴大正,高西全.MATLAB及在电子信息课程中的应用(第2版)[M].北京:
电子工业出版社,2004
[2]高西全,丁玉美.数字信号处理(第三版)[M].西安:
西安电子科技大学出版社,2008
[3]刘顺兰,吴杰.数字信号处理(第二版)[M].西安:
西安电子科技大学出版社,2008
[4]吴湘淇.信号、系统与信号处理(上、下)[M].北京:
电子工业出版社,2000
[5]张志勇.精通MATLAB6.5[M].北京:
北京航空航天大学出版社,2003
[6]门爱东,杨波,全子一.数字信号处理[M].北京:
人民邮电出版社,2003
[7]吴湘淇.信号与系统(第3版)[M].北京:
电子工业出版社,2009
[8]吴湘淇,肖熙,郝晓莉.信号、系统与信号处理的软硬件实现[M].北京:
电子工业出版社,2002
[9]万建伟,王玲.信号处理仿真技术[M].长沙:
国防科技大学出版社,2008
[10]JohnG.Proakis,DimitrisG.Manolakis.数字信号处理[M].方艳梅,刘永清译.北京:
电子工业出版社,2007
[11]SanjitKMitra.数字信号处理实验指导书[M].孙洪等译.北京:
电子工业出版社,2006
另外:
请同学们根据自己的选题,确定好关键词,在网上搜索一些参考内容,也可在校园网图书馆中的数字资源搜索下载自己需要的参考文章。
附:
课程设计报告范文
《数字信号处理》
课程设计报告
FIR数字滤波器设计及MATLAB实现
专业:
通信工程
班级:
通信09-1BF
组次:
第10组
姓名:
张三
学号:
14062300513
FIR数字滤波器设计及MATLAB实现
一、设计目的
MATLAB是一种以数值计算和数据图示为主的计算机软件,并包含适应多个学科的专业软件包,以及完善程序开发功能。
在MATLAB中设计并实现FIR数字滤波器,就是MATLAB软件在信号处理中的应用。
通过这次课程设计,以期我们能更加熟悉MATLAB的功能,掌握MATLAB程序设计,为以后的毕业设计奠定一定的基础。
二、设计任务
用窗函数法设计线性相位FIR低通滤波器,该滤波器的通带截止频率
,单位脉冲响应h(n)的长度M=21,并绘出h(n)及其幅度响应特性曲线。
三、设计原理
①窗函数设计法的基本原理:
为了用
逼近理想的频率响应
,获取有限长序列h(n)的最有效方法是用一个有限长的窗口函数序列w(n)来截取无限长序列
即:
h(n)=w(n)
其中:
=
②在MATLAB信号处理工具箱中为用户提供了Boxcar(矩形),Bartlet(巴特利特),Hanning(汉宁)等函数,这些函数可通过“helpsignal﹨signal”获取。
由于这些窗函数调用格式相同,下面仅以矩形函数为例说明其调用格式。
格式:
w=boxcar(M)
功能:
返回M点矩形窗序列。
窗的长度M又称为窗函数设计FIR数字滤波器的阶数。
根据卷积理论可知,
=
因此,
逼近程度的好坏完全取决于窗函数的频率特性。
表
(1)给出了部分窗函数的频率特性。
表
(1)在相同条件下,部分窗函数的频率特性
名称
主瓣带宽
过渡带宽
最小阻带衰减
Boxcar(矩形)
4
/M
1.8
/M
21dB
Bartlet(巴特利特)
8
/M
4.2
/M
25dB
Hanning(汉宁)
8
/M
6.2
/M
44dB
Hamming(哈明)
8
/M
6.6
/M
51dB
Blackman(布莱克曼)
12
/M
11
/M
74dB
四、设计过程
在这里我假设低通滤波响应的频率响应为
中心点
=(21-1)/2=10;
相应的单位脉冲响应
为
dw=
=
对于滤波器窗函数序列的形状及长度的选择很关键,一般希望窗函数满足以下两项要求:
⑴窗函数主瓣尽可能地窄,以获取较陡的过渡带。
⑵尽量减少窗谱的最大旁瓣的相对幅度。
也就是能尽量集中于主瓣,这样使肩峰和波纹减少,就可增大阻带的衰减。
但是这两项是不能同时都满足的。
当选用主瓣宽度较窄时,虽然得到较陡的过渡带,但通带和阻带的波动明显增加;当选用最小的旁瓣幅度时,虽能得到平坦的幅度响应和较小的阻带波纹,但过渡带会加宽,也即主瓣会加宽。
因此,对于这个设计,我决定采用矩形窗设计。
0
而对于矩形窗
=
FIR滤波器的系统函数H(z)
=
MATLAB源程序为:
M=21;wc=pi/4;%理想低通滤波器参数
n=0:
M-1;r=(M-1)/2;
nr=n-r+eps*((n-r)==0);
hdn=sin(wc*nr)/pi./nr;%计算理想低通单位脉冲响应hd(n)
ifrem(M,2)~=0,hdn(r+1)=wc/pi;end;%M为奇数时,处理n=r点的0/0型
wn1=boxcar(M);%矩形窗
hn1=hdn.*wn1';%加窗
subplot(2,1,1);stem(n,hn1,'.');line([0,20],[0,0]);
xlabel('n'),ylabel('h(n)'),title('矩形窗设计的h(n)');
hw1=fft(hn1,512);w1=2*[0:
511]/512;%求频谱
subplot(2,1,2),plot(w1,20*log10(abs(hw1)))
xlabel('w/pi'),ylabel('幅度(dB)');title('幅度特性(dB)');
程序运行结果如下图:
结论:
通过这次课程设计,我们可总结得知窗函数设计FIR滤波器的步骤:
①根据技术要求确定待求滤波器的单位取样响应。
②由过渡带及阻带衰减的要求,选择窗函数的形式,并估计窗口长度N。
③计算滤波器的单位取样响应。
④验算技术指标是否满足要求。
而在用窗函数设计FIR数字滤波器的时候,我们应该特别注意窗函数序列的形状及长度的选择。
即设计窗函数的时候,窗函数形式的选择最为关键。
五、收获与体会
因为这次课程设计,我重新温习了有关FIR滤波器的这部分内容,以前遗留下的很多疑问再通过这次作业,有一部分已得到解决。
用MATLAB设计滤波器,使我对MATLAB这个软件有了更深层次的了解,相信如果以后还要用MATLAB这个软件的话,特别是写有关数字信号处理方面的程序,应该不是问题。
这是我第二次写课程设计报告,虽说写的不怎么样,但我还较满意。
因为我享受了过程,几天忙着找资料,有很努力的去做,想想如果把这种认真放到做别的事情,就算最后没成功也会很高兴,比起不努力去做总是会有成效的。
《数字信号处理》
课程设计报告
信号的频谱分析及MATLAB实现
专业:
通信工程
班级:
通信09-2BF
组次:
第12组
姓名:
杨慧银
学号:
14062300513
信号的频谱分析及MATLAB实现
摘要:
DFT是在时域和频域上都已离散的傅里叶变换,适于数值计算且有快速算法,是利用计算机实现信号频谱分析的常用数学工具。
文章介绍了利用DFT分析信号频谱的基本流程,重点阐述了频谱分析过程中误差形成的原因及减小分析误差的主要措施,实例列举了MATLAB环境下频谱分析的实现程序。
通过与理论分析的对比,解释了利用DFT分析信号频谱时存在的频谱混叠、频谱泄漏及栅栏效应,并提出了相应的改进方法。
关键词:
MATLAB;频谱分析;离散傅里叶变换;频谱混叠;频谱泄漏;栅栏效应
引言
信号的频谱分析就是利用傅里叶分析的方法,求出与时域描述相对应的频域描述,从中找出信号频谱的变化规律,以达到特征提取的目的[1]。
不同信号的傅里叶分析理论与方法,在有关专业书中都有介绍,但实际的待分析信号一般没有解析式,直接利用公式进行傅里叶分析非常困难。
DFT是一种时域和频域均离散化的傅里叶变换,适合数值计算且有快速算法,是分析信号的有力工具。
下面以连续时间信号为例,介绍利用DFT分析信号频谱的基本流程,重点阐述频谱分析过程中可能存在的误差,实例列出MATLAB环境下频谱分析的实现程序。
1分析流程
实际信号一般没有解析表达式,不能直接利用傅里叶分析公式计算频谱,虽然可以采用数值积分方法进行频谱分析,但因数据量大、速度慢而无应用价值。
DFT在时域和频域均实现了离散化,适合数值计算且有快速算法,是利用计算机分析信号频谱的首选工具。
由于DFT要求信号时域离散且数量有限,如果是时域连续信号则必须先进行时域采样,即使是离散信号,如果序列很长或采样点数太多,计算机存储和DFT计算都很困难,通常采用加窗方法截取部分数据进行DFT运算。
对于有限长序列,因其频谱是连续的,DFT只能描述其有限个频点数据,故存在所谓栅栏效应。
总之,用DFT分析实际信号的频谱,其结果必然是近似的。
即使是对所有离散信号进行DFT变换,也只能用有限个频谱数据近似表示连续频谱;如果对离散信号进行了加窗处理,则会因截断效应产生吉伯斯现象;倘若是连续信号,则还会出现频谱混叠。
但如果合理选择参数,分析误差完全可以控制在允许范围内,利用DFT分析信号的频谱在工程上是完全可行的[2]。
分析信号频谱的基本流程如图1所示。
图1信号频谱分析的基本流程
2分析误差
利用DFT(实际是用FFT)对连续或离散信号进行频谱分析时,如果信号连续一般要进行采样和截断,即使信号离散也往往需要进行加窗截断。
用有限的离散数据进行DFT变换,得到有限个DFT数据值,与原信号的频谱肯定不同,这种不同就是分析误差。
下面按信号频谱分析的基本流程,分别介绍误差形成的原因及减小分析误差的主要措施,为实际分析过程中适当选择参数提供理论依据。
2.1混叠现象
对连续信号进行频谱分析时,先要对信号进行采样,理论上要求采样频率
必须大于两倍信号的最高频率[3]。
在满足采样定理条件下,采样序列的数字频谱能准确反映连续信号的模拟频谱,否则会发生频谱混叠现象。
严格地讲,实际信号的持续时间有限、频谱无限,为了尽可能减少频谱混叠,信号在采样之前一般都要进行预滤波处理。
预滤波也不可能是理想低通,所以频谱混叠不可避免。
在实际工作中,为了减小频谱混叠的影响,可通过适当提高防混叠滤波器的指标和适当增大采样频率来实现,采样频率常取信号最高频率的2.5~3倍。
各类连续信号采样频率的选取原则与方法可参考文[2]。
2.2截断效应
利用计算机对离散序列或连续信号的采样序列进行DFT运算时,往往要进行截断,即将离散序列进行加窗处理。
对离散序列的加窗实际上是将离散序列与窗函数相乘,加窗后信号的频谱是加窗前信号的频谱与窗函数频谱的卷积,造成截断后信号的频谱与截断前信号的频谱不同,这就是所谓截断效应。
截断效应对频谱分析的影响主要表现在两个方面:
1.频谱泄漏原序列经截断后,频谱会向两边展宽,通常称这种展宽为泄漏。
频谱泄漏使频谱变模糊,分辨率变差,泄漏程度和窗函数幅度谱主瓣宽度有关。
窗型一定,窗口越长,主瓣越窄,频谱泄漏越小。
窗口长度一定,矩形窗主瓣最窄,频谱泄漏最小,但其旁瓣的幅度最大。
2.谱间干扰对原序列截断,频谱不仅会向附近展宽,还会形成许多旁瓣,引起不同频率间的干扰,简称谱间干扰。
特别是强信号谱的旁瓣可能湮没弱信号的主谱或误认为是另一假信号的主谱线。
矩形窗的旁瓣幅度大,谱间干扰严重。
相对而言,布莱克曼窗的旁瓣幅度比矩形窗小,谱间干扰小,但其主瓣过渡带宽,分辨率差。
采样频率或采样周期是在满足混叠误差前提下选取的,当采样频率或采样周期确定后,适当增加窗口长度有利于减小截断效应。
工程上,可用试探法确定窗口长度M,即将M加倍,分别进行DFT运算,直到相邻两个长度的计算结果接近,取长度较小的M,这样既可满足截断效应要求,又可使存储单元最小且运算速度最快。
如对频率分辨率
有要求,则窗口长度M可取
或大于且接近该值的2的整数幂。
在窗口长度一定情况下,如果希望引起频谱扩展的过渡带窄,可选矩形窗,但其旁瓣大,谱间干扰严重。
若选用布莱克曼窗,旁瓣幅度小,谱间干扰相对较小,但主瓣过渡带更宽,分辨率会进一步下降[4]。
2.3栅栏效应
对加窗后的序列进行DFT运算时,DFT长度必须大于或等于加窗序列的长度,否则会作自动截短处理。
实际的DFT运算一般采用FFT算法,其长度取大于或等于加窗序列的2的整数幂,不足进行补零处理,得到的DFT值是对加窗序列的连续谱进行等间隔取样的结果。
这就好比通过一个有很多缝隙的栅栏去观察一个连续频谱,很多地方会被栅栏挡住,故称栅栏效应。
在加窗序列的尾部补零可使频谱的取样点更密,相当于加密了栅栏的缝隙,使原来看不到的谱分量可能看得到,减小了栅栏效应,但由于被观察的连续谱并没有发生变化,故频率分辨率并没有提高,最多只能说可视分辨率提高了[5]。
要提高信号的频率分辨率,选择主瓣窄的截断窗有一定的改善,但谱间干扰会更严重,根本上只能通过增加原始信号的长度来实现。
3分析实例
对信号进行频谱分析时,由于信号不同,傅里叶分析的频率单位也可能不同,频率轴有不同的定标方式。
为了便于对不同信号的傅里叶分析进行对比,这里统一采用无纲量的归一化频率单位,即模拟频率对采样频率归一化;模拟角频率对采样角频率归一化;数字频率对2π归一化;DFT的k值对总点数归一化。
同时,为了便于与理论值进行对比,理解误差的形成和大小,这里以确定信号的幅度谱分析为例进行分析说明。
假设信号为:
,分析过程:
首先利用CTFT公式计算其模拟频谱的理论值;然后对其进行等间隔理想采样,得到
序列,利用DTFT公式计算采样序列的数字连续频谱理论值,通过与模拟频谱的理论值对比,理解混叠误差形成的原因及减小误差的措施;接下来是对
序列进行加窗处理,得到有限长加窗序列
,再次利用DTFT公式计算加窗后序列
的数字连续频谱,并与加窗前
的数字连续频谱进行对比,理解截断误差形成的原因及减小误差的措施;最后是对加窗序列进行DFT运算,得到加窗后序列
的DFT值,它是对
数字连续频谱进行等间隔采样的采样值,通过对比,理解栅栏效应及DFT点数对栅栏效应的影响。
利用MATLAB实现上述分析过程的程序如下:
clc;closeall;clear;
%CTFT程序,以x(t)=exp(-t)t>=0为例
%利用数值运算计算并绘制连续信号波形
L=4,%定义信号波形显示时间长度
fs=4,T=1/fs;%定义采样频率和采样周期
t_num=linspace(0,L,100);%取若干时点,点数决定作图精度
xt_num=exp(-1*t_num);%计算信号在各时点的数值
subplot(3,2,1);plot(t_num,xt_num),%绘信号波形
xlabel('时间(秒)'),ylabel('x(t)'),%加标签
grid,title('(a)信号时域波形'),%加网格和标题
%利用符号运算和数值运算计算连续信号幅度谱的理论值
symstW%定义时间和角频率符号对象
xt=exp(-1*t)*heaviside(t),%连续信号解析式
XW=fourier(xt,t,W),%用完整调用格式计算其傅氏变换
%在0两边取若干归一化频点,点数决定作图精度
w1=[linspace(-0.5,0,50),linspace(0,1.5,150)];
XW_num=subs(XW,W,w1*2*pi*fs);%利用置换函数求频谱数值解
mag1=abs(XW_num);%计算各频点频谱的幅值
subplot(3,2,2);plot(w1,mag1),%绘制归一化频率幅值谱线
xlabel('频率(*2*pi*fs)rad/s'),ylabel('幅度'),%加标签
grid,title('(b)连续信号幅频理论值'),%加网格和标题
%DTFT程序,以x(n)=exp(-nT)n>=0为例
%利用数值运算计算并绘制离散信号图形
N=L*fs+1;n_num=0:
N-1;%生成信号波形采样点
xn_num=exp(-1*n_num*T);%计算信号理想采样后的序列值
subplot(3,2,3);stem(n_num,xn_num,'b.'),%绘序列图形
xlabel('n'),ylabel('x(n)'),%加标签
grid,title('(c)理想采样图形'),%加网格和标题
%利用符号运算和数值运算计算离散信号幅度谱的理论值
symsnzw%定义符号对象
xn=exp(-n*T),%定义离散信号
Xz=ztrans(xn,n,z),%用完整调用格式计算其Z变换
%利用复合函数计算序列傅里叶变换的解析解
Z=exp(j*w);Hejw=compose(Xz,Z,z,w);
Hejw_num=subs(Hejw,w,w1*2*pi);%求频谱数值解
mag2=abs(Hejw_num);%计算各频点频谱的幅度
subplot(3,2,4);plot(w1,mag2*T),%绘制频谱幅度曲线
xlabel('频率(*2*pi)rad'),ylabel('幅度'),%加标签
grid,title('(d)离散信号幅频理论值'),%加网格和标题
%序列加窗图示及频谱幅值绘制
%利用数值运算计算并绘制加窗后序列xw(n)的图形
M=8;win=(window(@rectwin,M))';%定义窗点和窗型
xwn=xn_num.*[win,zeros(1,N-M)];%给离散信号加窗
subplot(3,2,5);stem(n_num,xwn,'b.'),%加窗序列图示
xlabel('n'),ylabel('xw(n)'),%加标签
grid,title('(e)加窗序列图形'),%加网格和标题
%利用符号运算和数值运算计算加窗序列的频谱幅值
%先求加窗序列的Z变换,注意表达式长度限制问题
Xwz=0;forn=0:
(M-1);Xwz=Xwz+xwn(n+1)*z^(-n);end
%利用复合函数计算加窗序列傅里叶变换的解析解
Zw=exp(j*w);HejwM=compose(Xwz,Zw,z,w);
HejwM_num=subs(HejwM,w,w1*2*pi);%求频谱数值解
mag3=abs(HejwM_num);%计算各频点频谱的幅度
subplot(3,2,6);plot(w1,mag3*T),%绘频谱幅度曲线
%利用DFT计算加窗序列xw(n)的离散谱幅值
Ndft=16,Xk=fft(xwn,Ndft);%定义DFT点数和DF