数字信号处理课程设计选做题目.docx
《数字信号处理课程设计选做题目.docx》由会员分享,可在线阅读,更多相关《数字信号处理课程设计选做题目.docx(21页珍藏版)》请在冰豆网上搜索。
数字信号处理课程设计选做题目
数字信号处理课程设计选做题目及要求
一、课程设计题目
1.DFT在信号频谱分析中的应用
2.用窗函数法设计FIR数字低通滤波器
注:
以上课程设计题目具体要求可参考附录一
二、课程设计的考核方法及成绩评定
课程设计的考核依据学生的学习态度、方案合理性、资料完备性、创造性、报告撰写规范性和书面表达能力等为考核点,对学生进行综合考核。
成绩评定采用优秀、良好、中等、及格和不及格五级记分制。
评定细则如下:
1.遵守纪律(10%):
根据设计出勤情况、遵守纪律情况及设计态度等因素评定;
2.设计报告(80%):
根据课程设计报告书内容要求和实际完成情况评定;
3.设计效果(10%):
根据设计实际完成的质量及设计中的创造性评定;
对设计任务理解透彻,能够全面、正确、独立地完成设计内容所规定的任务,得出正确的设计结果,并按时提交完整、规范的设计报告,可评为优秀;按照设计任务要求能够顺利地完成任务,得出结果,按时提交较完整的、符合要求的设计报告,可评定为良好;按照设计要求完成了软件的编程与调试,基本完成了任务要求,提交符合要求的设计报告,可评为中等;基本完成设计目标,但不够完善,存在缺陷,在帮助指导下能够完成任务要求,提交设计报告,可评为及格;不能完成规定的任务和要求,未提交设计报告的,或抄袭他人设计报告的评为不及格。
三、课程设计报告撰写格式要求
课程设计报告格式按附录三中的要求去做。
报告应认真书写,条理清晰,内容充实、插图规范,符合设计格式要求。
程序执行结果的图形尽量打印出来。
注:
附录一:
可供参考的课程设计题目及具体内容要求
附录二:
MATLAB语言简介
附录三:
课程设计报告撰写格式
附录一:
可供参考的设计题目及具体内容要求
设计一DFT在信号频谱分析中的应用
一、设计目的
1.熟悉DFT的性质。
2.加深理解信号频谱的概念及性质。
3.了解高密度谱与高分辨率频谱的区别。
二、设计任务与要求
1.学习用DFT和补零DFT的方法来计算信号的频谱。
2.用MATLAB语言编程来实现,在做课程设计前,必须充分预习课本DTFT、DFT及补零DFT的有关概念,熟悉MATLAB语言,独立编写程序。
三、设计内容
1.用MATLAB语言编写计算序列x(n)的N点DFT的m函数文件dft.m。
并与MATLAB中的内部函数文件fft.m作比较。
2.对离散确定信号
作如下谱分析:
(1)截取
使
成为有限长序列N(
),(长度N自己选)写程序计
算出
的N点DFT
画出时域序列图xn~n和相应的幅频图
。
(2)将
(1)中
补零加长至M点,长度M自己选,(为了比较补零长短的影响,M可以取两次值,一次取较小的整数,一次取较大的整数),编写程序计算
的M点DFT,画出时域序列图和两次补零后相应的DFT幅频图。
(3)利用补零DFT计算
(1)中N点有限长序列
频谱
并画出相应的幅频图
。
3.研究高密度谱与高分辨率频谱。
对连续确定信号
以采样频率fs=32kHz对信号
采样得离散信号
,分析下列三种情况的幅频特性。
(1)采集数据
长度取N=16点,编写程序计算出
的16点DFT
并画出相应的幅频图
(2)采集数据
长度N=16点,补零加长至M点(长度M自己选),利用补零DFT计算
的频谱
并画出相应的幅频图
。
(3)采集数据
长度取为M点(注意不是补零至M),编写程序计算出M点采集数据
的的频谱
并画出相应的幅频图
。
四、设计报告要求
1.简述设计目的及原理。
2.完成设计中要求的各种理论推导和计算,并列出相应的MATLAB程序。
3.绘出设计中要求的各种曲线,并作出说明。
4.结合设计过程,归纳得出结论,并分析设计中遇到的问题及解决思路和方法。
5.写出设计体会。
6.简要回答如下思考题:
(1)对比设计内容2中
(1)
(2)(3)的图,说明补零DFT的作用。
(2)解释设计内容3中
图和
图有什么区别?
补零DFT能否提高信号的频谱分辨率,说明提高频谱密度、频谱分辨率的措施各是什么?
设计二用窗函数法设计FIR数字低通滤波器
一、设计目的
1.熟悉设计线性相位数字滤波器的一般步骤。
2.掌握用窗函数法设计FIR数字滤波器的原理和方法。
3.熟悉各种窗函数的作用以及各种窗函数对滤波特性的影响。
4.学会根据指标要求选取合适的窗函数。
二、设计任务与要求
1.学会计算滤波器各项性能指标及如何来满足给定的指标要求。
2.用MATLAB语言编程实现给定指标要求的滤波器的设计。
3.熟悉MATLAB语言,独立编写程序。
4.设计低通FIR滤波器的指标:
通带最大波动
,
阻带最小衰减
,
三、设计内容
1.熟悉各种窗函数,在MATLAB命令窗下浏览各种窗函数,绘出(或打印)所看到的
窗函数图。
2.编写计算理想低通滤波器单位抽样响应hd(n)的m函数文件ideal.m。
3.编写计算N阶差分方程所描述系统频响函数
的m函数文件fr.m。
4.根据指标要求选择窗函数的形状与长度N。
5.编写.m程序文件,通过调用ideal.m和fr.m文件,计算你设计的实际低通FIR滤波器的单位抽样响应h(n)和频率响应
,打印在频率区间[O,π]上的幅频响应特性曲线
,幅度用分贝表示。
6.验证所设计的滤波器是否满足指标要求。
四、设计报告要求
1.简述设计目的及原理。
2.完成设计中要求的各种理论推导和计算,并列出相应的MATLAB源程序。
3.绘出(或打印)设计中要求的各种曲线及数据,并作出说明。
4.将你所设计的滤波器的技术指标计算出来,并与给定的指标作比较,归纳得出结论。
5.写出设计体会。
6.简要回答如下思考题:
(1)设计线性相位数字滤波器的一般步骤。
(2)窗函数有哪些指标要求?
对给定指标要求的低通滤波器,理论计算所需窗函数的长度N。
(3)用窗函数法设计FIR滤波器,滤波器的过渡带宽度和阻带衰减与哪些因素有关?
(4)比较所选窗长N相同但窗形状不同对滤波器设计结果的影响以及选同一种窗函数但窗长N不同时对滤波器设计结果的影响,将结论写在报告中。
附录二:
MATLAB简介
本课程设计是以MATLAB语言程序用法为基础,在MATLAB环境下完成各项设计内容。
下面介绍MATLAB语言及其用法。
(一)MATLAB语言概述
1、MATLAB语言的发展
MATLAB语言是由美国的CleverMoler博士于1980年开发的,设计者的初衷是为解决“线性代数”课程的矩阵运算问题,取名MATLAB即MatrixLaboratory矩阵实验室的意思。
MATLAB已经不仅仅是一个“矩阵实验室”了,它集科学计算、图象处理;声音处理于一身,并提供了丰富的Windows图形界面设计方法。
MATLAB语言是功能强大的计算机高级语言,它以超群的风格与性能风靡全世界,成功地应用于各工程学科的研究领域。
MATLAB在美国已经作为大学工科学生必修的计算机语言之一(C、FOR-TRAN、ASSEMBLER、MATLAB)。
近年来,MATLAB语言已在我国推广使用,现在已应用于各学科研究部门和许多高等院校。
2、MATLAB能在各领域做什么
工业研究与开发;
数学教学,特别是线性代数;
数值分析和科学计算方面的教学与研究;
电子学、控制理论和物理学等工程和科学学科方面的教学与研究;
经济学、化学和生物学等计算问题的所有其他领域中的教学与研究,等等。
3、MATLAB语言的功能
强大的数值(矩阵)运算功能;
广泛的符号运算功能;
高级与低级兼备的图形功能(计算结果的可视化功能);
可靠的容错功能;
应用灵活的兼容与接口功能;
信息量丰富的联机检索功能。
(二)MATLAB的程序设计
MATLAB语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易。
m文件简介:
用户如想灵活应用matlab去解决实际问题,充分调用matlab的科学技术资源,就需要编辑m文件。
包含matlab语言代码的文件称为m文件,其扩展名为m。
编辑m文件可使用各种文本编辑器。
1、matlab的工作模式
窗口+m文件窗口。
(1)指令驱动模式
通常matlab以指令驱动模式工作,即在matlab窗口下当用户输入单行指令时,matlab立即处理这条指令,并显示结果,这就是matlab命令行方式。
命令行操作时,matlab窗口只允许一次执行一行上的一个或几个语句。
(2)m文件模式
将matlab语句构成的程序存储成以m为扩展名的文件,然后再执行该程序文件,这种工作模式称为程序文件模式。
程序文件不能在指令窗口下建立,因为指令窗口只允许一次执行一行上的一个或几个语句。
2、m文件的创建
m文件的类型是普通的文本文件,我们可以使用系统认可的文本文件编辑器来建立m文件。
如dos下的edit,windows的记事本和word等。
3、matlab文件的类型
(1)数据文件(mat)
mat文件是matlab以标准二进制格式保存的数据文件,可将工作空间中有用的数据变量保存下来。
mat文件的生成和调用是由函数save和load完成的。
(2)m文件
m文件的语法类似于c语言,但又有其自身特点。
它只是一个简单的ASCII码文本文件,执行程序时逐行解释运行程序,matlab是解释性的编程语言。
m文件有两类独立的m文件:
命令文件和函数文件。
函数文件为可调用的m文件,
即简单的m文件;命令文件实际上是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果是一样的。
没有输入输出参数。
命令文件包括两部分:
注释文件和程序文件。
(3)matlab内置函数文件
matlab自定义的函数文件称内置函数文件。
调用内置函数的方法:
使用函数名并给出相应的入口、出口参数即可。
(4)函数m文件
需要输入变量,返回输出变量。
matlab用户可以根据需要编辑自己的m文件,它们可以像库函数一样方便的调用,从而极大地扩展了matlab的能力。
对于某一类特殊问题,如创建了许多m函数文件,则可形成新的工具箱。
这种用matlab语言创建定义新的matlab函数的功能,正体现了matlab语言强大的扩展功能。
函数m文件的格式:
function返回变量=函数名(输入变量)
注释说明语句段
程序语句段
(三)MATLAB矩阵运算
1、矩阵的输入
在命令窗口中输入
》a=1;b=2;c=3;
》x=[5bc;a*ba+cc/b]
x=
5.0002.0003.000
2.0004.0001.500
语句生成
用线性等间距生成向量矩阵(start:
step:
end)
》a=[1:
2:
10]
a=
13579
一些常用的特殊矩阵
单位矩阵:
eye(m,n);eye(m)
零矩阵:
zeros(m,n);zeros(m)
一矩阵:
ones(m,n);ones(m)
对角矩阵:
对角元素向量V=[a1,a2,…,an]A=diag(V)
随机矩阵:
rand(m,n)产生一个m×n的均匀分别的随机矩阵
2、矩阵的运算
转置。
对于实矩阵用(’)符号或(.’)求转置结果是一样的;然而对于含复数的矩阵,则(’)将同时对复数进行共轭处理,而(.’)则只是将其排列形式进行转置。
四则运算与幂运算。
逆矩阵与行列式计算。
求逆inv(A)。
求行列式det(A)。
(四)绘图简介
MATLAB提供了丰富的绘图功能:
helpgraph2d可得到所有画二维图形的命令。
helpgraph3d可得到所有画三维图形的命令。
下面介绍常用的二维图形命令。
1、基本的绘图命令
plot(x1,y1,option1,x2,y2,option2,…)。
x1,y1给出的数据分别为x,y轴坐标值,option1为选项参数,以逐点连折线的方式绘制1个二维图形;同时类似地绘制第二个二维图形,……等。
这是plot命令的完全格式,在实际应用中可以根据需要进行简化。
比如:
plot(x,y);plot(x,y,option),选项参数option定义了图形曲线的颜色、线型及标示符号,它由一对单引号括起来。
2、选择图像
figure
(1);figure
(2);…;figure(n)。
打开不同的图形窗口,以便绘制不同的图形。
3、画栅格
gridon在所画出的图形坐标中加入栅格。
gridoff除去图形坐标中的栅格
4、当前图形保持
holdon:
把当前图形保持在屏幕上不变,同时允许在这个坐标内绘制另外一个图形。
holdoff:
使新图覆盖旧的图形。
5、设定轴的范围
axis([xminxmaxyminymax]),axis(‘equal’):
将x坐标轴和y坐标轴的单位刻度大小调整为一样。
6、文字标示
text(x,y,’字符串’):
在图形的指定坐标位置(x,y)处,标示单引号括起来的字符串。
gtext(‘字符串’):
利用鼠标在图形的某一位置标示字符串。
title(‘字符串’):
在所画图形的最上端显示说明该图形标题的字符串。
xlabel(‘字符串’),ylabel(‘字符串’):
设置x,y坐标轴的名称。
输入特殊的文字需要用反斜杠(\)开头。
7、legend(‘字符串1’,‘字符串2’,…,‘字符串n’)
在屏幕上开启一个小视窗,然后依据绘图命令的先后次序,用对应的字符串区分图形上的线。
8、subplot(mnk):
分割图形显示窗口
m:
上下分割个数,n:
左右分割个数,k:
子图编号
9、semilogx:
绘制以x轴为对数坐标(以10为底),y轴为线性坐标的半对数坐标图形。
semilogy:
绘制以y轴为对数坐标(以10为底),x轴为线性坐标的半对数坐标图形。
10、一点补充说明
对于图形的属性编辑同样可以通过在图形窗口上直接进行。
但图形窗口关闭之后编辑结果不会保存。
课程设计报告撰写格式
课程设计报告编写格式:
(分为封面、目录和正文、参考文献四部分)
封面:
《XXXX》课程设计报告(3号字黑体)
(以下为4号宋体)
任课教师:
指导教师:
学生学号:
学生姓名:
所学专业:
年 月 日
一、设计题目
二、设计目的
三、设计原理
四、实现方法(包括MATLAB算法原理等)
五、设计内容及要求(应含有设计源程序)
六、设计结果及改进建议(要求画出所有设计曲线,并加以说明)
七、回答思考题
八、设计体会
九、参考文献(至少两篇)
参考文献格式要求:
作者名,文章(或书)名,出处(杂志或书),年,月,卷号,期号,页码。
例:
[1]王成华.单片机应用技术.电气电子教学学报,2001.5,Vol.4,No.1,p52-55.
[2]杨植心,陈光东.单片微型计算机及其应用.湖北:
华中理工大学出版社,1987
设计一DFT在信号频谱分析中的应用
一、设计目的
1.熟悉DFT的性质。
2.加深理解信号频谱的概念及性质。
3.了解高密度谱与高分辨率频谱的区别。
二、设计任务与要求
1.学习用DFT和补零DFT的方法来计算信号的频谱。
2.用MATLAB语言编程来实现,在做课程设计前,必须充分预习课本DTFT、DFT及补零DFT的有关概念,熟悉MATLAB语言,独立编写程序。
三、设计内容
1.用MATLAB语言编写计算序列x(n)的N点DFT的m函数文件dft.m。
并与MATLAB中的内部函数文件fft.m作比较。
参考程序如下:
functionXk=dft(xn,N)
iflength(xn)xn=[xn,zeros(1,N-length(xn))];
end
n=0:
N-1;
fork=0:
N-1
Xk(1,k+1)=sum(xn.*exp((-1)*j*n*k*(2*pi/N)));
end
2.对离散确定信号
作如下谱分析:
(2)截取
使
成为有限长序列N(
),(长度N自己选)写程序计
算出
的N点DFT
画出时域序列图xn~n和相应的幅频图
。
参考程序如下:
(假设N取10,即0≤n≤9时,编写程序,计算出X(n)的10点DFTXk)
n=0:
9;
xn=cos(0.48*pi*n)+cos(0.52*pi*n);
Xk=fft(xn,10);
subplot(2,1,1);stem(n,xn);grid;
subplot(2,1,2);stem(n,abs(Xk));grid;
(2)将
(1)中
补零加长至M点,长度M自己选,(为了比较补零长短的影响,M可以取两次值,一次取较小的整数,一次取较大的整数),编写程序计算
的M点DFT,
画出时域序列图和两次补零后相应的DFT幅频图。
参考程序如下:
(假设M取15和M取60,即分别补5个0和50个0,得补零后15点的序列xn1和60点的序列xn2,编写程序,计算出xn1的15点DFTXk1和xn2的60点DFTXk2)
n=0:
9;xn=cos(0.48*pi*n)+cos(0.52*pi*n);
n1=0:
14;xn1=[xn,zeros(1,5)];
n2=0:
59;xn2=[xn,zeros(1,50)];
Xk1=fft(xn1,15);
Xk2=fft(xn2,60);
subplot(3,1,1);stem(n,xn);grid;
subplot(3,1,2);stem(n1,abs(Xk1));grid;
subplot(3,1,3);stem(n2,abs(Xk2));grid;
(3)用补零DFT计算
(1)中N点有限长序列
频谱
并画出相应的幅频图
。
参考程序如下:
(假设M取100)
n=0:
9;xn=cos(0.48*pi*n)+cos(0.52*pi*n);
n1=0:
99;xn3=[xn,zeros(1,90)];
Xk3=fft(xn3,100);
plot(n1,abs(Xk3));grid;
3.研究高密度谱与高分辨率频谱。
对连续确定信号
以采样频率fs=32kHz对信号
采样得离散信号
,分析下列三种情况的幅频特性。
(1)采集数据
长度取N=16点,编写程序计算出
的16点DFT
并画出相应
的幅频图
。
(2)采集数据
长度N=16点,补零加长至M点(长度M自己选),利用补零DFT计算
的频谱
并画出相应的幅频图
。
(3)采集数据
长度取为M点(注意不是补零至M),编写程序计算出M点采集数据
的的频谱
并画出相应的幅频图
。
参考程序如下:
T=1/(32*10^3);
t=(0:
15);
xn=cos(2*pi*6.5*10^3*t*T)+cos(2*pi*7*10^3*t*T)+cos(2*pi*9*10^3*t*T);
Xk=fft(xn,16);
subplot(2,1,1);stem(t,xn);grid;
subplot(2,1,2);stem(t,abs(Xk));grid;
T=1/(32*10^3);
t=(0:
15);
xn=cos(2*pi*6.5*10^3*t*T)+cos(2*pi*7*10^3*t*T)+cos(2*pi*9*10^3*t*T);
n1=0:
30;xn1=[xn,zeros(1,15)];
Xk1=fft(xn1,31);
subplot(2,1,1);stem(n1,xn1);grid;
subplot(2,1,2);plot(n1,abs(Xk1));grid;
T=1/(32*10^3);
t=[0:
30];
xn=cos(2*pi*6.5*10^3*t*T)+cos(2*pi*7*10^3*t*T)+cos(2*pi*9*10^3*t*T);
Xk2=fft(xn,31);
subplot(2,1,1);stem(t,xn);grid;
subplot(2,1,2);plot(t,abs(Xk2));grid;
四、设计报告要求
1.简述设计目的及原理。
2.完成设计中要求的各种理论推导和计算,并列出相应的MATLAB程序。
3.绘出设计中要求的各种曲线,并作出说明。
4.结合设计过程,归纳得出结论,并分析设计中遇到的问题及解决思路和方法。
5.写出设计体会。
6.简要回答如下思考题:
(1)对比设计内容2中
(1)
(2)(3)的图,说明补零DFT的作用。
(2)解释设计内容3中
图和
图有什么区别?
补零DFT
能否提高信号的频谱分辨率,说明提高频谱密度、频谱分辨率的措施各是什么?
1、各窗函数图(假设N=67;)
N=67;
n=0:
N-1;
wn1=ones(1,N);stem(n,wn1);
figure;
wn2=hamming(N);stem(n,wn2);
figure;
wn3=BARTLETT(N);stem(n,wn3);
figure;
wn4=Hanning(N);stem(n,wn4);
2、计算理想低通滤波器单位冲激响应的源程序
function[hd]=ideal(wc,N)
q=(N-1)/2;
n=0:
N-1;
m=n-q+eps;
hd=sin(wc*m)./(pi*m);
3、计算频率响应的源程序
function[H]=fr(b,a,w);
m=0:
length(b)-1;
l=0:
length(a)-1;
num=b*exp(-j*m'*w);
den=a*exp(-j*l'*w);
H=num./den;
4、低通滤波器设计程序
wp=0.2*pi;
ws=0.3*pi;
width=ws-wp;
N=ceil(6.6*pi/width)+1;
n=0:
N-1;a=[1];
wc=(ws+wp)/2;
hd=ideal(wc,N);
wn=(hamming(N))';
h=hd.*wn;
k=0:
500;w=(pi/500)*k;
[H]=fr(h,a,w);
mag=abs(H);
db=-20*log10((mag+eps)/max(mag));
wth=pi/500;
rp=max(db(1:
1:
wp/wth+1))
as=round(min(db(ws/wth+1:
1:
500)))
subplot(2,2,1);
stem(n,hd);
title('理想冲激响应');
axis([0N-1-0.10.3]);
ylabel('hd');
subplot(2,2,2);
stem(n,wn);
title('海明窗');
axis([0N-101.1]);
ylabel('wn');
subplot(2,2,3);
stem(n,h);
title('实际冲激响应');
axis([0N-1-0.20.3]);
xlabel('n');
ylabel('h');
subplot(2,2,4);
plot(w/pi,-db);
title('幅度响应(dB)');
a