数字信号课程设计汇总.docx
《数字信号课程设计汇总.docx》由会员分享,可在线阅读,更多相关《数字信号课程设计汇总.docx(17页珍藏版)》请在冰豆网上搜索。
数字信号课程设计汇总
课程设计任务书
学生姓名:
专业班级:
电信1203班
指导教师:
工作单位:
题目:
离散时间信号与系统的频域分析及其编程实现
初始条件:
1.Matlab6.5以上版本软件;
2.课程设计辅导资料:
“Matlab语言基础及使用入门”、“数字信号处理原理与实现”、“Matlab及在电子信息课程中的应用”等;
3.先修课程:
信号与系统、数字信号处理、Matlab应用实践及信号处理类课程等。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1.课程设计时间:
1周(课内实践);
2.课程设计内容:
离散时间信号与系统的频域分析及其编程实现,具体包括:
离散时间信号的傅里叶变换、离散傅里叶变换、系统的幅频和相频特性等;
3.本课程设计统一技术要求:
研读辅导资料对应章节,对选定的设计题目进行理论分析,针对具体设计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表),并对实验结果进行分析和总结;
4.课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,具体包括:
1目录;
2与设计题目相关的理论分析、归纳和总结;
3与设计内容相关的原理分析、建模、推导、可行性分析;
4程序设计框图、程序代码(含注释)、程序运行结果和图表、实验结果分析和总结;
5课程设计的心得体会(至少500字);
6参考文献;
7其它必要内容等。
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
目录
1.课程设计内容及要求......................................1
2.课程设计原理............................................1
2.1离散时间信号的傅里叶变换...............................1
2.1.1离散时间信号的傅里叶变换概念............................1
2.1.2离散时间信号的傅里叶变换性质...........................2
2.2离散傅里叶变换.......................................3
2.2.1离散傅里叶变换概念..................................3
2.2.2离散傅里叶变换性质..................................3
2.3逆离散傅里叶变换......................................3
2.3.1逆离散傅里叶变换概念..............................3
3.程序源代码及仿真效果...................................5
3.1题目一..............................................5
3.2题目二..............................................6
3.3题目三.............................................11
4.心得体会..............................................14
5.参考文献..............................................15
摘要
此次数字信号处理课程设计是利用MATLAB进行分析和处理。
对离散时间信号进行频域分析,要对其进行傅里叶变换,通过得到的频谱函数进行分析。
离散时间傅里叶变换(DTFT)是傅立叶变换的一种。
它将以离散时间nT(其中n∈T,T为采样间隔)作为变量的函数(离散时间信号)f(nT)变换到连续的频域,即产生这个离散时间信号的连续频谱F(exp(iw)),其频谱是连续周期的。
离散傅里叶变换(DFT)是对离散周期信号的一种傅里叶变换,对于长度为有限长信号,则相当于对其周期延拓进行变换。
在频域上,DFT的离散谱是对DTFT连续谱的等间隔采样。
DTFT是对任意序列的傅里叶分析,它的频谱是一个连续函数;而DFT是把有限长序列作为周期序列的一个周期,对有限长序列的傅里叶分析,DFT的特点是无论在时域还是频域都是有限长序列。
关键字:
MATLAB;时域;离散傅里叶变换;频域
1.课程设计内容及要求
内容:
离散时间信号与系统的频域分析及其编程实现,具体包括:
离散时间信号的傅里叶变换、离散傅里叶变换、系统的幅频和相频特性等。
要求:
研读辅导资料对应章节,对选定的设计题目进行理论分析,针对具体设计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表),并对实验结果进行分析和总结。
题目:
1.已知序列xn=[1111],试用MATLAB编写程序,计算该序列的离散付里叶变换及逆离散付里叶变换。
2.取一个周期的正弦信号,作8点采样,求它的连续频谱。
然后对该信号进行N个周期延拓,再求它的连续频谱。
把N无限增大,比较分析其结果。
3.一个三阶滤波器由以下的差分方程描述:
y(n)=0.0211x(n)+0.0443x(n-1)+0.044x(n-2)+0.0181x(n-3)
+1.76y(n-1)-1.272y(n-2)+0.3181y(n-3)
画出此滤波器的副值和相位响应并说明它是一个什么样的滤波器。
2.课程设计原理
2.1离散时间信号的傅里叶变换
2.1.1离散时间信号的傅里叶变换概念
离散时间傅里叶变换(英语:
Discrete-timeFourierTransform,简称:
DTFT)是傅里叶变换的一种。
它将以离散时间nT(其中,T为采样间隔)作为变量的函数(离散时间信号)x(n)=f(nT)变换到连续的频域,即产生这个离散时间信号的连续频谱X(exp(jw)),值得注意的是这一频谱是周期的。
正变换:
X(exp(
))=
反变换:
2.1.2离散时间信号的傅里叶变换性质
DTFT也有很多与CTFT类似的性质,当然也有某些明显的差别。
下面对这些性质进行简单阐述及必要证明。
通过对DTFT性质的讨论,目的在于揭示信号时域和频域特性之间的关系。
周期性:
(k为整数)
线性性:
DTFT为线性变换,因此有
时间反转:
因此有:
共轭对称性:
因此有:
卷积特性:
即:
2.2离散傅里叶变换
2.2.1离散傅里叶变换概念
离散傅里叶变换(DFT),是傅里叶变换在时域和频域上都呈现离散的形式,将时域信号的采样变换为在离散时间傅里叶变换(DTFT)频域的采样。
在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。
即使对有限长的离散信号作DFT,也应当将其看作经过周期延拓成为周期信号再作变换。
在实际应用中通常采用快速傅里叶变换以高效计算DFT。
离散时间傅里叶变换(DTFT)是在时域上对连续傅里叶变换的采样。
DFT则是在频域上对DTFT的均匀采样。
2.2.2离散傅里叶变换性质
1.线性性质
如果X1(n)和X2(N)是两个有限长序列,长度分别为N1和N2,且Y(N)=AX1(N)+BX2(N)式中A,B为常数,取N=max[N1,N2],则Y(N)地N点DFT为Y(K)=DFT[Y(N)]=AX1(K)+BX2(K),0≤K≤N-1;
2.循环移位特性
设X(N)为有限长序列,长度为N,则X(N)地循环移位定义为Y(N)=X((N+M))下标nR(N),式中表明将X(N)以N为周期进行周期拓延得到新序列X'(N)=X((N))下标n,再将X'(N)左移M位,最后取主值序列得到循环移位序列Y(N)。
2.3逆离散傅里叶变换
2.3.1逆离散傅里叶变换概念
离散傅里叶逆变换的FFT算法也被称为IFFT算法。
设x(n)是一个长度为M的有限长序列,则定义x(n)的N点离散傅里叶变换为:
(式2.3.1)
X(k)的离散傅里叶逆变换为:
(式2.3.2)
我们发现,把DFT计算公式的旋转因子的幂取负号;每个输出取
;
变成
,就得到IDFT的计算公式。
这就是说把FFT算法经过上述改造就变成了相应的IFFT算法。
例如,计算一个
的频域抽取基2IFFT算法。
结果如图2-1所示。
图2-1频域抽取8点基2IFFT蝶形图
从公式2.3.2出发,经过变换,我们可以得到一些有意的启示。
(式2.3.3)
公式2.3.3说明,IDFT可以通过两次取共轭、再乘以
的方法,从对DFT的计算中继承下来。
对于计算IFFT,我们首先对输入的每个
取共轭作为输入,用一个已经编写好的计算DFT的FFT计算程序进行计算,再对于每个输出取共轭同时乘以
的方法得到结果。
计算过程如图2-2所示。
图2-2用FFT计算IFFT的过程
这种计算方法虽然比直接编写IFFT算法多了两次取共轭、再乘以
三个步骤,但是考虑到主要的计算量在FFT部分完成、总体计算量增加得不多。
最重要的是它实现了算法的继承与复用,实践了软件工程的思想,具有重大的理论价值和应用价值。
3.程序源代码及仿真效果
3.1题目一
已知序列xn=[1111],试用MATLAB编写程序,计算该序列的离散付里叶变换及逆离散付里叶变换。
程序代码:
xn=[1,1,1,1];
N=length(xn);
n=0:
N-1;
subplot(2,2,1);
stem(n,xn);
title('x(n)');
k=0:
N-1;
Xk=fft(xn,N);%计算Xk
subplot(2,1,2);
stem(k,abs(Xk));
title('Xk=DFT(xn)');
xn1=ifft(Xk,N);%计算xn
subplot(2,2,2);
stem(n,xn1);
title('x(n)=IDFT(Xk)');
仿真效果图:
图3-1序列离散傅里叶变换和反变换
结果分析:
时域时xn={1,1,1,1},经过计算频域X(K)={4,0,0,0},仿真效果图上可以很明显的看出,即序列xn经过傅里叶变换得到频域X(K)。
频域时X(K)={4,0,0,0}经过计算可得时域序列为xn={1,1,1,1},仿真效果图上很明显的看出,即频域X(K)进过离散傅里叶反变换得到序列xn。
仿真正确。
3.2题目二
取一个周期的正弦信号,作8点采样,求它的连续频谱。
然后对该信号进行N个周期延拓,再求它的连续频谱。
把N无限增大,比较分析其结果。
程序代码:
1个周期
k=8;
n1=[0:
1:
7];
xn1=sin(2*pi*n1/k);%抽样信号
subplot(2,2,1);
stem(n1,xn1,'.');
xlabel('t/T');
ylabel('x(n)');%坐标名
xk1=fft(xn1);
xk1=abs(xk1);
subplot(2,2,2);
stem(n1,xk1);
xlabel('k');
ylabel('x(k)');
仿真效果图:
图3-2N=1
2个周期
k=8;
n1=[0:
1:
15];
xn1=sin(2*pi*n1/k);
subplot(2,2,1);
stem(n1,xn1,'.');
xlabel('t/T');
ylabel('x(n)');
xk1=fft(xn1);
xk1=abs(xk1);
subplot(2,2,2);
stem(n1,xk1);
xlabel('k');
ylabel('x(k)');
仿真效果图:
图3-3N=2
10个周期
k=8;
n1=[0:
1:
79];
xn1=sin(2*pi*n1/k);
subplot(2,2,1);
stem(n1,xn1,'.');
xlabel('t/T');
ylabel('x(n)');
xk1=fft(xn1);
xk1=abs(xk1);
subplot(2,2,2);
stem(n1,xk1);
xlabel('k');
ylabel('x(k)');
仿真效果图:
图3-4N=10
20个周期
k=8;
n1=[0:
1:
159];
xn1=sin(2*pi*n1/k);
subplot(2,2,1);
stem(n1,xn1,'.');
xlabel('t/T');
ylabel('x(n)');
xk1=fft(xn1);
xk1=abs(xk1);
subplot(2,2,2);
stem(n1,xk1);
xlabel('k');
ylabel('x(k)');
仿真效果图:
图3-5N=20
100个周期
k=8;
n1=[0:
1:
799];
xn1=sin(2*pi*n1/k);
subplot(2,2,1);
stem(n1,xn1,'.');
xlabel('t/T');
ylabel('x(n)');
xk1=fft(xn1);
xk1=abs(xk1);
subplot(2,2,2);
stem(n1,xk1);
xlabel('k');
ylabel('x(k)');
仿真效果图:
图3-6N=100
结果分析:
本题取一个周期的正弦信号,作8点采样,仿真求它的连续频谱。
然后对该信号进行N=1,2,10,20,100个周期延拓,仿真再求它的连续频谱。
仿真效果图如上所示。
从仿真效果图可以看得出,在周期延拓时,随着N的增大,采样的幅值大小没有变化,只是采样间隔在减小,且与N成一定比列。
而随着N的增大,频域的绝对值在增大,间隔在减小。
3.3题目三
一个三阶滤波器由以下的差分方程描述:
y(n)=0.0211x(n)+0.0443x(n-1)+0.044x(n-2)+0.0181x(n-3)
+1.76y(n-1)-1.272y(n-2)+0.3181y(n-3)
画出此滤波器的副值和相位响应并说明它是一个什么样的滤波器。
程序代码:
b=[0.0211,0.0443,0.044,0.0181];%分子系数
a=[1.0000,-1.7600,1.272,-0.3181];%分母系数
m=0:
length(b)-1;
disp(m');
l=0:
length(a)-1;
disp(l');
k=500;%离散频率点数
k1=-k:
1:
k;%离散频率点
w=pi*k1/k;%离散频率点对应的频率
num=b*exp(-j*m'*w);%分子
den=a*exp(-j*l'*w);%分母
H=num./den;%系统函数
magH=abs(H);
angH=angle(H);
figure
(1);
subplot(211);
plot(w/pi,magH);
title('幅度谱');%幅频曲线
grid;
axis([-1100.9]);%设置坐标
subplot(212);
plot(w/pi,angH/pi);title('相位谱');%相频曲线
grid;
仿真效果图:
图3-7幅值和相位响应
结果分析:
H(z)=
令z=exp(
)取绝对值即可得到系统的幅度谱及相位谱。
从幅度谱和相位谱可以看得出当|
|>0.2时,幅度衰减比较快,且在|
|≈0.6时幅度几乎为零。
在|
|<0.2范围内相位谱几乎呈线性变化。
所以此系统是一个低通滤波器。
4.心得体会
通过该课程设计,我对MATLAB这一软件有了进一步的了解和掌握,对MATLAB编译程序的基本过程,和构造工具及其相关的技术也有了相当的知识。
而且,也对课本上的一部分知识有了进一步的理解。
在本次课程设计过程中,我有很大的收获,这不仅仅是理论知识上的完善,而且在自学能力和动手能力上有了新的飞跃!
设计中,我感觉到自己知识极度匮乏,网查阅资料,翻阅各类相关书籍,完全靠自己设计,这让我的思维逻辑更加清晰。
在操作MATLAB中我基本握了一些基本程序的设计,为以后进一步的深入学习做好了铺垫。
通过这次课程设计我还对数字信号处理中离散时间信号的运算及其编程实现,具体包括:
序列的相加、相乘、合成、截取和各种移位运算等有了更深刻的认识,通过自己绘制程序设计框图,编写程序代码(含注释),运行程序产生结果,最后对程序结果进行分析和总结。
这些对今后我在数字信号处理方面和通信方面的学习有很大的帮助。
加深了对课堂抽象概念的理解,巩固了课堂上所学的理论知识,并能很好地理解与掌握数字信号处理中的基本概念、基本原理、基本分析方法。
同时掌握编程方法和解决实际问题的技巧。
同时,对离散时间信号的傅里叶变换,离散傅里叶变换,离散傅里叶反变换等也有意更深的了解。
在这次课程设计过程中,我发现了自己综合应用能力的欠缺,也认识到计算机软件的强大功能。
以后,我会更加重视用软件编程,应用计算机来对处理信号。
5.参考文献
[1]余成波.《数字信号处理及MATLAB实现》.清华大学出版社版.
[2]程佩青.《数字信号处理教程》.清华大学出版社出版.2007
[3]丁玉美.《数字信号处理》.西安电子科技大学出版社.2008
[4]A.V.奥本海姆.《数字信号处理》.科学出版社.2009
[5]刘泉阙大顺《数字信号处理原理与实现》电子工业出版社.2009
姓名
性别
男
专业、班级
电信1203班
课程设计题目:
离散时间信号与系统的频域分析及其编程实现
课程设计答辩或质疑记录:
问题1:
离散傅里叶变换的概念?
答:
离散傅里叶变换,是傅里叶变换在时域和频域上都成离散的形式,,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。
问题2:
通过离散傅里叶逆变换得到序列的简单过程?
答:
可将频域下的信号通过取共轭,在经过傅里叶变换,再乘以1/N的方法得到时域序列。
问题3:
此次课程设计有什么收获?
答:
通过这次课程设计,我收获很大。
首先,就是对MATLAB仿真软件有了更深的了解并熟练掌握操作方法,为以后的学习工作奠定很好的基础。
再就是通过这次课程设计,让我学会了,独立的思考问题,善于发现问题并解决问题。
成绩评定依据:
最终评定成绩(以优、良、中、及格、不及格评定)