数字信号处理课程设计报告_3

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)<N
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
1()X k ,并画出相应的图1()~X k k 。

取M 为32时,因为编写的dft 函数在长度N 大于序列长度时自动补零,故直接调用函数即可。

程序如下:
for n=0:9
xn(n+1)=cos(0.48*pi*n)+cos(0.52*pi*n) end
dft32=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:9
xn(n+1)=cos(0.48*pi*n)+cos(0.52*pi*n) end
dft1024=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:15
xn(n+1)=cos(2*pi*6.5*1000*n/32000)*exp(-1*1000*n/32000) end
subplot(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:15
xn(n+1)=cos(2*pi*6.5*1000*n/64000)*exp(-1*10000*n/64000) end
subplot(2,1,1)
stem(0:15,xn)
dft16=dft(xn,16);
subplot(2,1,2);
stem(0:15,dft16);
当α=105时,抽样频率可以选择为320khz。

for n=0:15
xn(n+1)=cos(2*pi*6.5*1000*n/320000)*exp(-1*100000*n/320000) end
subplot(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:15
xn(n+1)=cos(2*pi*6.5*1000*n/32000)*exp(-1*1000*n/32000)
end
dft16=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),截取序列长度为16
for n=[1:16];
xn(n)=sin(n);
end
t=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 。

程序如下:
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
2. 根据频响特性与系统零极点的关系,自己构造一个N 阶差分方程,使该差分方程为 数字低通滤波器。

利用MATLAB 程序画出相应的幅频图()~j H e ωω。

构造了一个5阶差分方程,程序如下
for n=[1:10];
x(n)=0;
end
a(1)=1;
a(3)=0.2;
a(4)=0.1;
a(5)=0.05;
for n=[11:20];
x(n)=sin(n);
for k=[1:5]
y(k)=a(k)*x(n-k);
end
y1(n)=sum(y)
end
b=[1];
u=0:500;w=(pi/500)*u;
H=fr(a,b,w);
plot(w,H);
3. 改变 2.中差分方程的系数,使该差分方程分别为数字高通及全通滤波器。

利用MATLAB 程序画出相应的幅频图()~j H e ωω。

将系数变为负数后得到高通滤波器
for n=[1:10];
x(n)=0;
end
a(1)=-1;
a(2)=-0.5;
a(3)=-0.2;
a(5)=-0.05;
for n=[11:20];
x(n)=sin(n);
for k=[1:5]
y(k)=a(k)*x(n-k);
end
y1(n)=sum(y)
end
b=[1];
u=0:500;w=(pi/500)*u;
H=fr(a,b,w);
plot(w,H);
五、设计体会以及思考
(1)分析白噪声的特点,白噪声有哪些主要参数?如何调整随机序列的输出平均率和平均值?
白噪声过程的样本实称成为白噪声序列,简称白噪声。

之所以称为白噪声,是因为他和白光的特性类似,白光的光谱在各个频率上有相同的强度。

均值为0,方差即是功率。

Rand函数产生的是幅值为0到1均匀分布的白噪声,均值为1/2,方差为1/12 可以使用它来改写一个可以改变参数的均匀分布白噪声:
sqrt(12*d)*(rand(1,L)-0.5)这就是一个可以改变功率输出的白噪声。

(2) 计算正弦信号的平均功率、功率密度谱和自相关函数?当截取的点数N不为正弦信
号周期的整数倍时,会有什么结果?
答:正弦信号的平均功率为最大值的根号二分之一,功率谱密度可以截短后计算频谱密度然后平方得到能量谱密度。

(3)设计中应当如何正确选择点数?
答:为正弦信号周期的整数倍。

相关文档
最新文档