当前位置:文档之家› 哈尔滨工程大学数字信号处理实验二.

哈尔滨工程大学数字信号处理实验二.

实验报告课程名称实验项目名称实验类型实验学时班级学号姓名指导教师实验室名称实验时间实验成绩预习部分实验过程表现实验报告部分总成绩教师签字日期实验二 离散时间傅立叶变换 实验报告一、实验原理1、经由正、逆离散时间傅里叶变换表达的信号傅里叶表达式是信号分析的一个关键部分,下面方程分别是分析方程和综合方程。

X(ωj e)=∑∞-∞=-n ][x nj en ωωωωd e )e (21][x nj j ⎰-=πππX n 类似地,当LTI 系统用于滤波时,作为冲击响应离散时间傅里叶变换的频率响应,提供了LTI 系统简介的描述。

离散时间傅里叶变换X(ωj e)是ω的周期复值函数,周期总是2π,并且基周期通常选在区间[-π,π)上。

对离散时间傅里叶变换DTFT 来说有两个问题:第一个问题是:DTFT 的定义对无限长信号是有效的 第二个问题是:DTFT 是连续变量ω的函数在MA TLAB 中,任何信号必须是有限长度的,这就使第一点成为问题。

因此,不可能使用MA TLAB 计算无限长信号的DTFT 。

有一个值得注意的例外情形,当能从变换定义式推导出解析式并只是计算它时,可以使用MATLAB 计算无限长信号的DTFT 。

例如在x[n]=na u[n],x[n]具有有理的DTFT 的情形下。

2、第二个问题是频率抽样问题。

MA TLAB 擅长在有限网格点上计算DTFT 。

通常选择足够多的频率以使绘出的图平滑,逼近真实的DTFT 。

对计算有利的最好选择是在(-π,π)区间上一组均匀地隔开的频率,或者对共轭对称变换选择[0,π]区间。

采用上述抽样办法,DTFT 式变成X(ωj e)=1...2,1,0,][)(1)/2(/2-==∑-=-N k e n x eX L n n N k j Nk j ππ(3.11)DTFT 的周期性意味着在-π≤ω<0区间上的数值是那些对k>N/2的数值。

因为上式是在有限数量的频率点k ω=2πk/N 处计算,并在有限范围内求和,因此它是可计算的。

由于信号长度必须是有限的(0≤n<L ),这个求和式不适用于x[n]=na u[n]的情形。

在对DTFT 进行抽样时,并不要求N=L ,尽管通常经由DFT 进行计算(使用FFT算法)时,如果N=L 很便利。

的确,在使用N 点DFT 时,如果N>L ,只须想像x[n]是增补零的即可;如果N<L ,会较复杂。

这种情形下,在正确应用FFT 计算N 点DFT 前,需要对x[n]进行时间混叠,因此此时应确保总是比远处是时间序列(即N>=L )点数多得多的频率处来计算DTFT 。

3、计算DTFT 需要两个函数,MA TLAB 的freqz 函数计算无限长信号,dtft (h ,H )函数计算有限长信号的DTFT 。

二:实验内容实验内容包括脉冲信号的DTFT ,asinc 的M 文件,无限长信号的DTFT ,指数信号,复指数信号这五个部分。

1. 脉冲信号的DTFTa 、已知矩形脉冲r[n]的定义式为在0≤n<L 上r[n]=1,n 为其余值时,r[n]均为0。

将r[n]代入DTFT 的分析方程X(ωj e)=∑∞-∞=-n ][x nj en ω中,计算化简后可得:2/)1(*)}2/sin(/)2/{sin()(--=L jw jw e w wl e R 。

b 、建立DTFT 函数(.M 文件) 实验程序清单1:function[A,B]=dtft(h,N)%DTFT calculate DTFT at N equally spaced frequencies %Usage:%[A,B]=dtft(h,N)%h:finite-length input vector,whose length is L %N:number of frequencies for evaluation over [-pi,pi) %==>constraint:N>=L %H:DTFT values(complex)%W:(2nd output)vector of freqs where DTFT is computed %N=fix(N);L=length(h); h=h(:); %<--for vectors ONLY!!! if(N<L)error('DTFT: # data samples cannot exceed # freq samples') endB=(2*pi/N)*[0:(N-1)]'; mid=ceil(N/2)+1;B(mid:N)=B(mid:N)-2*pi;%move[pi,2pi)to[-pi,0) B=fftshift(B);A=fftshift(fft(h,N));%move negative freq components实验程序清单2:(当w=80时)h=ones(1,12);[A,B]=dtft(h,80); %w=80时subplot(311),plot(B,real(A)); %把绘图窗口分成三行一列三个子图,然后在第一块区域作图 xlabel('B'),ylabel('A,real part'); %以B 为横轴,A 的实部为纵轴subplot(312),plot(B,imag(A)); %把绘图窗口分成三行一列三个子图,然后在第二块区域作图 xlabel('B'),ylabel('A,imag part'); %以B 为横轴,A 的虚部为纵轴subplot(313),plot(B,abs(A)); %把绘图窗口分成三行一列三个子图,然后在第三块区域作图 xlabel('B'),ylabel('A amplitude'); %以B 为横轴,A 的幅值为纵轴实验仿真图:-4-3-2-101234-1001020BA ,r e a l p a r t-4-3-2-101234-10010BA ,i m a g p a r t-4-3-2-101234051015BA a m p l i t u d e实验程序清单3:(当w=100时) h=ones(1,12);[A,B]=dtft(h,100); %w=100时 subplot(311),plot(B,real(A)); xlabel('B'),ylabel('A,real part'); subplot(312),plot(B,imag(A)); xlabel('B'),ylabel('A,imag part'); subplot(313),plot(B,abs(A)); xlabel('B'),ylabel('A amplitude'); 实验仿真图:-4-3-2-101234-1001020BA ,r e a l p a r t-4-3-2-101234-10010BA ,i m a g p a r t-4-3-2-101234051015BA a m p l i t u d e实验程序清单4:(当w=120时) h=ones(1,12);[A,B]=dtft(h,120); %w=120时 subplot(311),plot(B,real(A)); xlabel('B'),ylabel('A,real part'); subplot(312),plot(B,imag(A)); xlabel('B'),ylabel('A,imag part'); subplot(313),plot(B,abs(A)); xlabel('B'),ylabel('A amplitude');实验仿真图:-4-3-2-101234-1001020BA ,r e a l p a r t-4-3-2-101234-10010BA ,i m a g p a r t-4-3-2-101234051015BA a m p l i t u d e实验结果分析:由以上三组不同频率(w=80,w=100,w=120)的仿真图形可知,当w 越大,取的点数越多时,绘制的图形越来越平滑。

c 、注意asinc 函数零点的位置是规则分布的。

对奇数长脉冲,比如L=15的脉冲重复进行DTFT 计算并绘出幅度;同样再次检验零点位置,注意峰值高度。

实验程序清单: n=0:14;h=ones(1,15);[X,W]=dtft(h,150);subplot(211),plot(W,abs(X)); %把绘图窗口分成二行一列二个子图,然后在第一块区域作图grid; %图层为网格xlabel('W'),ylabel('|X(w)|'); %X 轴为w ,Y 轴为X(w)幅值 [H,X]=dtft(X,150);subplot(212),plot(X,abs(H)); %把绘图窗口分成二行一列二个子图,然后在第二块区域 作图 grid;xlabel('X'),ylabel('|H(w)|');%X 轴为X ,Y 轴为H(w)幅值实验仿真图:-4-3-2-101234051015W|X (w )|-4-3-2-11234050100150X|H (w )|实验结果分析:由仿真结果可以看出函数零点关于x=0对称。

在对称轴处幅值最大,离对称轴越远,幅值逐渐减小。

d 、对asinc 函数零点的间距与asinc 函数的直流值,确定出通用规则。

零点间距为π/6,由数学推导:在a 部分中,当L=12时,由R(ωj e)=0可得sin(wL/2)=0,即wL/2=k* π 则w=k*π/6。

故得出以上结论。

在实验a 部分的仿真图中,可观察到幅值高度为12。

则零点间距*幅值=(π/6)*12=2*π。

2、asinc 的M 文件编写一个MATLAB 的函数如asinc(w,L),直接从混叠函数表达式中计算在频率格上的asinc(w,L)。

该函数应该有两个输入:唱的L 和频率w 的向量。

函数必须检查被零除的情况,如w=0时。

直接计算混叠sinc 函数得到脉冲信号的DTFT 。

绘出幅度,保存该图以便将其与用dtft 得到的结果进行比较。

function [H,W]=asinc(w,L) %定义asinc 函数 N=fix(L); if (N<0)error('Please input a positive integer.(L>0)'); end%if(sin(w/2)=0) %endW=(2*pi/N)*[0:(N-1)]'; H=sin(w*N/2)/sin(w/2);3、指数信号对于信号x[n]=(0.9)^n*u[n],使用freqz 函数计算其DTFT X(ωj e )。

相关主题