燕山大学数字信号处理IDFT的实现课设.docx
《燕山大学数字信号处理IDFT的实现课设.docx》由会员分享,可在线阅读,更多相关《燕山大学数字信号处理IDFT的实现课设.docx(12页珍藏版)》请在冰豆网上搜索。
燕山大学数字信号处理IDFT的实现课设
燕山大学
课程设计说明书
题目:
IDFT的实现
学院(系):
电气工程学院
年级专业:
12级精仪1班
学号:
120103020055
学生姓名:
陈永秀
指导教师:
教师职称:
电气工程学院《课程设计》任务书
课程名称:
数字信号处理课程设计
基层教学单位:
仪器科学与工程系指导教师:
学号
学生姓名
(专业)班级
设计题目
19、IDFT的实现
设
计
技
术
参
数
设
计
要
求
按照上面IDFT算法编写IFFT程序,其中FFT部分不用写出清单,可调用fft函数,。
并分别对单位脉冲序列、矩形序列、三角序列和正弦序列进行FFT和IFFT,验证所编程序。
参
考
资
料
数字信号处理方面资料
MATLAB方面资料
周次
前半周
后半周
应
完
成
内
容
收集消化资料、学习MATLAB软件,进行相关参数计算
编写仿真程序、调试
指导教
师签字
基层教学单位主任签字
说明:
1、此表一式四份,系、指导教师、学生各一份,报送院教务科一份。
2、学生那份任务书要求装订到课程设计报告前面。
电气工程学院教务科
摘要
数字信号处理是随着计算机的发展而迅速发展起来的一门新兴学科,如今已广泛地应用于雷达、通信、声纳、遥感、生物工程、数字信号处理等各个领域。
在计算机的到广泛应用的如今,对于自然界中各种模拟信号的处理,首先要通过AD转换成离散数字信号,便于计算机快速实时的处理。
本次课程设计是用Matlab软件利用FFT算法编写IFFT的程序。
内容较为初步,但是作为初步入门,以后做深层次的研究也是十分有必要的。
关键字:
快速傅里叶变换(FFT),快速傅里叶逆变换(IFFT),IDFT,Matlab实现
目录
第一章.离散傅里叶变换和逆变换5
1.1离散傅里叶变换(DFT)和逆变换(IDFT)的引出定义5
1.2离散傅里叶变换的快速算法FFT5
1.3相关证明6
第二章软件仿真设7
2.1输入序列及其Matlab实现7
2.2Matlab程序设计7
第三章.Matlab结果分析10
3.1输入序列波形10
3.2FFT波形11
3.3IFFT波形12
第四章学习心得14
第五章设计与实验过程中遇到的问题和分析15
第一章.离散傅里叶变换和逆变换
1.1离散傅里叶变换(DFT)和逆变换(IDFT)的引出定义
所谓傅里叶变换就是以时间为自变量的信号和以频率为自变量的频谱函数之间的某种变换关系。
随时间自变量形式不同,其傅里叶的变换形式也有不同。
实际工作中,当用数字计算机对信号进行频谱分析时,要求信号必须以有限长度的离散值作为输入,而计算所得的频谱值自然也是有限的,离散的。
DFS变换满足时频域自变量离散化,但其时间变量和频率变量又同时具有周期性;DTFT变换满足时间自变量的有限长度,但其频率变量为连续形式。
考虑到DFS变换的时·频域形式虽然是周期序列,但每个周期却只有N个独立的复值,知道其中一个周期的内容及尅得到其他的内容。
因此在DFS变换的时频域各取一个周期,即可构造出时间和频率自变量皆为离散·有限长度的傅里叶变换,这就是离散傅里叶(DFT)的引出思想。
式中,
N为DFT变换区间长度,上两式即称为有限长序列的离散傅里叶变换对。
一式称为离散傅里叶变换,简称DFT;二式称为离散傅里叶逆变换,简称IDFT.
有限长序列x(n)的离散傅里叶变换X(k),正好是x(n)周期延拓
的离散傅里叶级数系数
的主值序列X(k),也可以理解为,离散傅里叶变换DFT是对序列的傅里叶变换DTFT的频率采样。
1.2离散傅里叶变换的快速算法FFT
有限长序列可以通过离散傅里叶变换(DFT)将其频域也离散化
成有限长序列。
但其计算量太大,很难实时地处理问题,因此引出了快速傅里叶变换(FFT).1965年,Cooley和Tukey提出了计算离散傅里叶变换(DFT)的快速算法,将DFT的运算量减少了几个数量级。
从此,对快速傅里叶变换(FFT)算法的研究便不断深入,数字信号处理这门新兴学科也随FFT的出现和发展而迅速发展。
根据对序列分解与选取方法的不同而产生了FFT的多种算法,基本算法是基2DIT和基2DIF。
FFT在离散傅里叶反变换、线性卷积和线性相关等方面也有重要应用。
快速傅氏变换(FFT),是减少离散傅氏变换计算次数的一种快速算法。
1.3相关证明
=DFT[
]=
=
因为FFT为DFT的快速傅里叶算法,结果是一样的,故同样有
第二章软件仿真设
2.1输入序列及其Matlab实现
1.单位脉冲序列:
imp1=(100000000);
2.矩形序列:
imp2=(11111111);
3.三角序列:
imp3=(12344321);
4.正弦序列:
f=100,t=n/f,f0=10,imp4=sin(2*pi*f0*t);
2.2Matlab程序设计
functionimp=cyx(IMP,N)
IMP=conj(IMP);%对IMP取复共轭
imp=conj(fft(IMP,N))/N;%按照所给算法公式计算IFFT
end
设计N=8,分别对单位脉冲序列,矩形序列,三角序列和正弦序列进行FFT,并调用cyx计算IFFT变换。
%调用FFT函数计算IDFT
N=8;
n=0:
1:
N;
imp1=[10000000];%输入单位脉冲序列imp1
imp2=[11111111];%输入矩形序列imp2
imp3=[12344321];%输入三角序列imp3
f=50;
t=n/f;
f0=10;
imp4=sin(2*pi*f0*t);%输入正弦序列imp4
subplot(2,2,1)%subplot(m,n,p)生成m*n个子图,当前激活第p个子图。
stem(imp1);%绘制函数图形
subplot(2,2,2)
stem(imp2);
subplot(2,2,3)
stem(imp3);
subplot(2,2,4)
stem(imp4);
figure
(2)%建立图形
IMP1=fft(imp1,N);%调用fft函数;imp1为信号,N为变换点数,对信号X的前n个点进行快速傅里叶变换
IMP2=fft(imp2,N);
IMP3=fft(imp3,N);
IMP4=fft(imp4,N);
subplot(2,2,1);
stem(IMP1);
subplot(2,2,2)%输出fft变换波形
stem(IMP2);
subplot(2,2,3)
stem(IMP3);
subplot(2,2,4)
stem(IMP4);
figure(3);
imp1=lhs(IMP1,N);%调用lhs函数;
imp2=lhs(IMP2,N);
imp3=lhs(IMP3,N);
imp4=lhs(IMP4,N);
subplot(2,2,1)
stem(imp1);
subplot(2,2,2)
stem(imp2);
subplot(2,2,3)
stem(imp3);
subplot(2,2,4)
stem(imp4);
第三章.Matlab结果分析
3.1输入序列波形
imp=
10000000
imp=
11111111
imp=
12344321
imp=
00.95110.5878-0.5878-0.9511-0.00000.95110.5878
3.2FFT波形
IMP1=
11111111
IMP2=
80000000
IMP3=
Columns1through4
20.0000-5.8284-2.4142i0-0.1716-0.4142i
Columns5through8
0-0.1716+0.4142i0-5.8284+2.4142i
IMP4=
Columns1through4
1.53882.4548+0.5220i-2.4899-0.9511i-0.5527-0.2045i
Columns5through8
-0.3633-0.5527+0.2045i-2.4899+0.9511i2.4548-0.522
3.3IFFT波形
imp=
10000000
imp=
11111111
imp=
12344321
imp=
00.95110.5878-0.5878-0.9511-0.00000.95110.5878
第四章学习心得
经过这几天紧张的课程设计,我从中学到以许多新的知识,从可设任务一分下来开始,我便投入到紧张的学习中,此次课程设计我的题目是IDFT的实现觉得这个应该是一个比较基础性的题目,紧密的联系了数字信号处理课程中的本质内容。
可是对于Matlab进行数字信号处理我还是初次接触,所以需要学习的东西有很多。
要想完成此次课设题目不仅要熟练掌握数字信号处理中的理论知识,而且还要熟悉本次课程设计所用到的MATLAB软件。
所以在这几天的课程设计中,我首先学习如何使用MATLAB软件,同时又由于对基础知识掌握不牢固,又重新翻开了数字信号处理课本,复习研究其中的原理,在熟悉理论知识环节和编程环境的前提下,开始思考如何利用编程实现我们的课设要求。
通过这几天的学习,经过老师的指导和同学们的相互探讨,我初步掌握了Matlab软件和快速傅立叶变换的编程实现。
通过查找资料和独立处理一些问题,锻炼了自己的能力,对我今后的学习和工作起到了不可或缺的帮助。
第五章设计与实验过程中遇到的问题和分析
首先Matlab的使用问题,从头开始学习,基本内容,基本语句。
其次是设计题目的理解问题,经过问同学,恍然大悟,自己又翻阅了课本与图书馆借来的资料,明白了课程设计应该有的内容与方向。
然后在具体编写语句时,也出现了各种小问题,通过从网络上查找资料,与同学的沟通交流,在Matlab软件上不断进行编程修改,最终得到了正确结果,完成了课程设计。
参考文献:
【1】郭仕剑,王宝顺,贺志国,杨可心等编著matlab7.x数字信号处理人民邮电出版社2006:
29-50.
【2】谢平王娜林洪彬编著信号处理原理及应用机械工业出版社54-6181-95.