目录1.设计概述(目的和要求) 32.设计任务 33.设计题目(简要描述三个题目) 44.内容及结果 45.思考及体会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)<Nxn=[xn,zeros(1,N-length(xn))];end n=0:N-1; for k=0:N-1Xk(1,k+1)=sum(xn.*exp((-1)*j*n*k*(2*pi/N)));End 运算量估计:对于N=M2点序列进行时间抽选奇偶分解FFT 计算,需分M 级,每级计算N/2个蝶。
每一级需N/2次复乘、N 次复加,因此总共需要进行: 复乘:N M N N222log =复加:N N NM 2log =直接计算N 点的DFT ,需要2N 次复乘、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.0469Time_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 点DFT1()X k ,并画出相应的图1()~X k k 。
(2)将 (1)中()x n 补零加长至M 点(长度M 自己选),编写程序计算()x n 的M 点DFT1()X k ,并画出相应的图1()~X k k 。
取M 为32时,因为编写的dft 函数在长度N 大于序列长度时自动补零,故直接调用函数即可。
程序如下:for n=0:9xn(n+1)=cos(0.48*pi*n)+cos(0.52*pi*n) enddft32=dft(xn,32); stem(0:31,dft32);运行结果如下(3)利用补零DFT 计算 (1)中N 点有限长序列()x n 频谱()j X e ω并画出相应的幅频图()~j X e ωω。
当dft 的N 取值足够大时,可以用plot 函数来画平滑的图像,就是所要的幅频图程序如下: for n=0:9xn(n+1)=cos(0.48*pi*n)+cos(0.52*pi*n) enddft1024=dft(xn,1024); plot(0:1023,dft1024);3. 研究高密度谱与高分辨率频谱。
对连续确定信号3()cos(2 6.510)*t a x t t e απ-=⨯⨯ 令α=103 ,104 ,105 (1)对不同的 α考虑恰当的采样频率进行取样分析,说明理由(2) 对某一个α采样数据选取适当长度,计算DFT ,画出相应的X(k)和()j X e ω~ω (1)对不同的 α考虑恰当的采样频率进行取样分析,说明理由当α=103时,抽样频率可以选择为32khz ,因为满足32Khz 大于两倍最高频率 for n=0:15xn(n+1)=cos(2*pi*6.5*1000*n/32000)*exp(-1*1000*n/32000) endsubplot(2,1,1) stem(0:15,xn) dft16=dft(xn,16); subplot(2,1,2); stem(0:15,dft16); 运行结果为上图为抽样后函数xn,下方图则为16点dft。
当α=104时,抽样频率可以选择为64khz,因为32Khz已经不再大于两倍最高频率故,程序改动如下:for n=0:15xn(n+1)=cos(2*pi*6.5*1000*n/64000)*exp(-1*10000*n/64000) endsubplot(2,1,1)stem(0:15,xn)dft16=dft(xn,16);subplot(2,1,2);stem(0:15,dft16);当α=105时,抽样频率可以选择为320khz。
for n=0:15xn(n+1)=cos(2*pi*6.5*1000*n/320000)*exp(-1*100000*n/320000) endsubplot(2,1,1)stem(0:15,xn)dft16=dft(xn,16);subplot(2,1,2);stem(0:15,dft16);X eω~ω(2) 对某一个α采样数据选取适当长度,计算DFT,画出相应的X(k)和()j取α=103,采样频率32Khz,取15个点程序如下:for n=0:15xn(n+1)=cos(2*pi*6.5*1000*n/32000)*exp(-1*1000*n/32000)enddft16=dft(xn,1024);plot(0:1023,dft16);设计题目二:有噪声情况下信号幅度谱的研究1.编写产生均匀分布白噪声序列的M函数文件drand.m 。
rand函数产生的是幅值为【0,1】均匀分布的白噪声,均值为1/2,方差为1/12可以使用它来改写一个可以改变参数的均匀分布白噪声。
其中d为方差,即传说中的功率,L则为产生的m序列长度。
程序如下:function drand=drand(L,d);drand = sqrt(12*d)*(rand(1,L)-0.5)2. 编写计算序列x(n) 正弦信号加白噪声的自相关序列的M函数文件dcor.m。
此函数中调用写好的drand函数,生成噪声信号,然后使用matlab中的xcorr计算自相关函数,程序如下:function dcor=dcor(xn,t);N=length(xn);yn=drand(N,1);zn=xn+yn;dcor=xcorr(zn)3.编写m程序文件,分析含噪信号的相关函数及功率密度谱。
%假设xn序列为xn=sin(n),截取序列长度为16for n=[1:16];xn(n)=sin(n);endt=dcor(xn);subplot(2,1,1);stem(t);subplot(2,1,2);stem(1:16,dft(xn,16))设计题目三:离散时间系统频域分析1. 用MA TLAB 语言编写计算N 阶差分方程所描述系统频响函数()j H e ω的m 函数文件fr.m 。