数字信号处理课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1.设计概述(目的和要求) 3
2.设计任务 3
3.设计题目(简要描述三个题目) 4
4.内容及结果 4
5.思考及体会14
一、课程设计目的及要求
数字信号处理是一门理论性和实践性都很强的学科,通过课程设计可以加深理解掌握基本理论,培养学生分析问题和解决问题的综合能力,为将来走向工作岗位奠定坚实的基础,因此做好课程设计是学好本课程的重要教学辅助环节。
本指导书结合教材《数字信号处理教程》的内容,基于MATLAB程序语言提出课程设计的题目及要求,在做课程设计之前要求学生要尽快熟悉MATLAB语言,充分预习相关理论知识,独立编写程序,以便顺利完成课程设计。
二、课程设计任务
课程设计的过程是综合运用所学知识的过程。课程设计主要任务是围绕数字信号的频谱分析、特征提取和数字滤波器的设计来安排的。根据设计题目的具体要求,运用MATLAB语言完成题目所规定的任务及功能。设计任务包括:查阅专业资料、工具书或参考文献,了解设计课题的原理及算法、编写程序并在计算机上调试,最后写出完整、规范的课程设计报告书。课程设计地点在信息学院机房,一人一机,在教师统一安排下独立完成规定的设计任务。
三、课程设计题目
根据大纲要求提供以下三个课程设计题目供学生选择,根据实际情况也可做其它相关课题。
1.DFT在信号频谱分析中的应用
1. 用MATLAB语言编写计算序列x(n)的N点DFT的m函数文件dft.m。并与MA TLAB中的内部函数文件fft.m作比较。
2. 对离散确定信号
()cos(0.48)cos(0.52)x n n n ππ=+ 作如下谱分析:
(1) 截取()x n 使()x n 成为有限长序列N(0≤≤n N -1),(长度N 自己选)写程序计
算出()x n 的N 点DFT ()X k ,并画出相应的幅频图()~X k k 。
(2) 将 (1)中()x n 补零加长至M 点(长度M 自己选),编写程序计算()x n 的M 点
DFT 1()X k ,并画出相应的图1()~X k k 。
(3) 利用补零DFT 计算 (1)中N 点有限长序列()x n 频谱()j X e ω并画出相应的幅频图
()~j X e ωω。
3. 研究高密度谱与高分辨率频谱。
对连续确定信号3()cos(2 6.510)*t a x t t e απ-=⨯⨯ 令α=103 ,104 ,105 (1)对不同的
α考虑恰当的采样频率进行取样分析,说明理由
(2) 对某一个α采样数据选取适当长度,计算DFT ,画出相应的X(k)和()j X e ω
~ω 2. 有噪声情况下信号幅度谱的研究
1.编写产生均匀分布白噪声序列的M 函数文件drand.m 。
2. 编写计算序列x(n) 正弦信号加白噪声的自相关序列的M 函数文件dcor.m 。
3.编写m 程序文件,分析含噪信号的相关函数及功率密度谱。
3. 取样信号的混叠现象研究
1. 用MA TLAB 语言编写计算N 阶差分方程所描述系统频响函数()j H e ω
的m 函数文件fr.m 。
2. 根据频响特性与系统零极点的关系,自己构造一个N 阶差分方程,使该差分方程为
数字低通滤波器。利用MATLAB 程序画出相应的幅频图()~j H e ω
ω。
3. 改变 2.中差分方程的系数,使该差分方程分别为数字高通及全通滤波器。利用
MATLAB 程序画出相应的幅频图()~j H e ω
ω。
四 内容及结果
设计题目一: DFT 在信号频谱分析中的应用
1. 用MATLAB 语言编写计算序列x(n)的N 点DFT 的m 函数文件dft.m 。并与MATLAB 中的内部函数文件fft.m 作比较。 function Xk=dft(xn,N)
if length(xn) xn=[xn,zeros(1,N-length(xn))]; end n=0:N-1; for k=0:N-1 Xk(1,k+1)=sum(xn.*exp((-1)*j*n*k*(2*pi/N))); End 运算量估计: 对于N=M 2点序列进行时间抽选奇偶分解FFT 计算,需分M 级,每级计算N/2个蝶。每一级需N/2次复乘、N 次复加,因此总共需要进行: 复乘:N M N N 22 2log = 复加:N N NM 2log = 直接计算N 点的DFT ,需要2 N 次复乘、N(N-1)次复加。N 值越大,时间抽选奇偶分解FFT 算法越优越。例如当N=2048点时,时间抽选奇偶分解FFT 算法比直接计算DFT 速度快300多倍 可以用一下Matlab 程序比较DFT 和FFT 的运算时间 N=2048; M=11; x=[1:M,zeros(1,N-M)]; t=cputime; y1=fft(x,N); Time_fft=cputime-t t1=cputime; y2=dft(x,N); Time_dft=cputime-t1 t2=cputime; 运行结果: Time_fft = 0.0469 Time_dft = 15.2031 由此可见FFT 算法比直接计算DFT 速度快得多 2. 对离散确定信号 ()cos(0.48)cos(0.52)x n n n ππ=+ 作如下谱分析: (1)截取()x n 使()x n 成为有限长序列N(0≤≤n N -1),(长度N 自己选)写程序计算出 ()x n 的N 点DFT ()X k ,并画出相应的幅频图()~X k k 。 (假设N 取15,即0≤n ≤14 时, 编写程序,计算出X (n )的15点DFT Xk ) n = 0:14; xn=cos(0.48*pi*n)+cos(0.52*pi*n); Xk = fft (xn, 15); subplot(2,1,1); stem(n, xn); grid; subplot(2,1,2); stem(n, abs(Xk)); grid; (2)将 (1)中()x n 补零加长至M 点(长度M 自己选),编写程序计算()x n 的M 点DFT 1()X k ,并画出相应的图1()~X k k 。 (2)将 (1)中()x n 补零加长至M 点(长度M 自己选),编写程序计算()x n 的M 点DFT