1、数字信号处理,Lecture 5: Discrete Fourier Transformation, DFT杨再跃Email: 玉泉校区工控新楼507,若序列x(n)的非零值点仅分布在有限整数集合上,则称此序列为有限长序列,即 x(n)=0 nN2,周期延拓(Periodic Extension),有限长序列(Finite Length Sequence),由于计算机系统存储空间的限制,对序列分析时只能存储其中一段信息,因此有限长序列是数字信号处理的主要对象;可以证明,对确定性的信号,完全可以用有限长序列反映信号所包含的频率信息;,若有限长序列x(n)不是周期序列,以正整数N对它进行周期延拓,
2、获得无限长的周期序列,记为,则n对N取余数就等于r:,例如:,周期延拓(Periodic Extension),Friday, September 21, 2018,4,定义周期序列 从n=0 到(N-1)的第一个周期为主值序列或区间,周期延拓(Periodic Extension),描述系统特性的工具,Friday, September 21, 2018,5,Friday, September 21, 2018,6,DTFT是分析离散时间信号和系统的有力工具,DTFT的局限性,Friday, September 21, 2018,7,DTFT是分析离散时间信号和系统的有力工具,DTFT的局限
3、性,两个局限性:如果序列无限长,则需要为无限个时间点计算DTFT;DTFT输出为关于数字频率的连续函数,需要为无限多个频率点计算频谱;,Friday, September 21, 2018,8,DTFT的局限性,解决方案:对无限长序列加窗截断,生成有限长序列;把频域内的DTFT频谱曲线看做是一个连续频率函数,仿照对连续时间信号采样,对DTFT曲线X(ej)进行等频率间隔采样,得到离散的DTFT序列,离散傅里叶变换(DFT),对有限长离散序列x(n)的离散时间傅里叶变换(DTFT)按照等频率间隔 在一个频率周期(0N,则由N点DFT重构的序列将产生混叠失真;,Friday, September
4、21, 2018,36,例5.2 已知系统的单位冲击响应为: ,(1) 求DTFT;(2)由N点频域采样得到DFT;(3)由DFT数据重构时域序列;,Solution: (1),频域抽样造成时域混叠!,(2),Friday, September 21, 2018,37,混叠无法避免,但通过增大频域采样点值N可以降低这种影响。,Friday, September 21, 2018,38,39,重构Z变换,已知z变换的定义和IDFT的定义分别如下:,把x(n)表达式带入z变换定义:,此式就是由X(k)重构X(z)的内插公式,Pk(z)称作内插函数,40,单位圆上的z变换即DTFT, 代入内插函数,
5、重构DTFT,Friday, September 21, 2018,41,结论:DFT在采样点上的值与DTFT在相同频率点上的值相等,因此在这些点上可以真实反映DTFT,在其他频率点的值是内插函数的加权和,因此,DTFT可由DFT还原为如下表达式:,在采样频率上,Friday, September 21, 2018,42,P123,Ex 3-4: 求宽度为L的矩形序列DTFT和N点DFT:(1)若N=L,能根据DFT重构DTFT吗?(2)比较N=8,32及64时,DTFT和DFT的频谱图。,Solution:,DTFT,(1)把N = L带入上式,尽管有L个点的值,但只在零频率点上非零,无法复
6、现其它频率点的值,Friday, September 21, 2018,43,Solution:,(2)把L=8带入DTFT表达式,P123,Ex 3-4: 求宽度为L的矩形序列DTFT和N点DFT:(1)若N=L,能根据DFT重构DTFT吗?(2)比较N=8,32及64时,DTFT和DFT的频谱图。,Friday, September 21, 2018,44,Solution:,(2)把N=32和64分别带入DFT表达式,P123,Ex 3-4: 求宽度为L的矩形序列DTFT和N点DFT:(1)若N=L,能根据DFT重构DTFT吗?(2)比较N=8,32及64时,DTFT和DFT的频谱图。,
7、Friday, September 21, 2018,45,Assignment,分析简单声音信号,利用乐器生成包含若干频率的声音信号,利用电脑声卡和matlab及采集分析信号;可参考利用附录中的matlab(2013版)程序;使用不同的采样分析参数,说明这些参数的影响;,Friday, September 21, 2018,46,% sample rateSampleRate = 4000; % number of bits for audio datanBits = 8; % number of channels for audioDefaultChannel = 1; % time fo
8、r recording. in secondsRecordTime = 2; % number of samples in DFTnSamples = 1024; % Store data in double-precision array.Sound = audiorecorder(SampleRate, nBits, DefaultChannel);disp(Start recording)recordblocking(Sound, RecordTime);disp(End of Recording.);,AudioSample = getaudiodata(Sound);% Plot the waveform.subplot(2,1,1);plot(AudioSample);% Perform DFTX = abs( fft(AudioSample, nSamples) );Frequency = 0:SampleRate/nSamples:SampleRate-1;% Plot the DFTsubplot(2,1,2);plot(Frequency, X);,Appendix,