实验13 离散傅里叶变换的性质
(完美格式版,本人自己完成,所有语句正确,不排除极个别错误,特别适用于山大,勿用冰点等工具下载,否则下载之后的word格式会让很多部分格式错误,谢谢)
XXXX学号姓名处XXXX
一、实验目的
1 加深对离散傅里叶变换(DFT)基本性质的理解。 2 了解有限长序列傅里叶变换(DFT)性质的研究方法。
3 掌握用MATLAB语言进行离散傅里叶变换性质分析时程序编写的方法。
二、实验内容
1 线性性质。 2 循环移位性质。 3 循环折叠性质。
4 时域和频域循环卷积特性。 5 循环对称性。
三、实验环境
MATLAB7.0
四、实验原理
1 线性性质
如果两个有限长序列分别为x1(n)和x2(n),长度分别为N1和N2,且
y(n)=ax1(n)+bx2(n) (a、b均为常数)
则该y(n)的N点DFT为
Y(k)=DFT[y(n)]=aX1(k)+bX2(k) 0≤k≤N-1
其中:N=max[N1,N2],X1(k)和X2(k)分别为x1(n)和x2(n)的N点DFT。
例13-1 已知x1(n)=[0,1,2,4],x2(n)=[1,0,1,0,1],求: (1)y(n)=2x1(n)+3x2(n),再由y(n)的N点DFT获得Y(k);
(2)由x1(n)、x2(n)求X1(k)、X2(k),再求Y(k)=2X1(k)+3X2(k)。
用图形分别表示以上结果,将两种方法求得的Y(k)进行比较,由此验证有限长序列傅里叶变换(DFT)的线性性质。
解 MATLAB程序如下:
>> xn1=[0,1,2,4]; %建立xn1序列 >> xn2=[1,0,1,0,1]; %建立xn2序列 >> N1=length(xn1);N2=length(xn2); >> N=max(N1,N2); %确定N
>> if N1>N2 xn2=[xn2,zeros(1,N1-N2)]; %对长度短的序列补0 >> elseif N2>N1 xn1=[xn1,zeros(1,N2-N1)]; >> end
>> yn=2*xn1+3*xn2; %计算yn >> n=0:N-1;k=0:N-1;
>> Yk1=yn*(exp(-j*2*pi/N)).^(n'*k); %求yn的N点DFT >> Xk1=xn1*(exp(-j*2*pi/N)).^(n'*k); %求xn1的N点DFT >> Xk2=xn2*(exp(-j*2*pi/N)).^(n'*k); %求xn2的N点DFT >> Yk2=2*Xk1+3*Xk2; %由Xk1、Xk2求Yk >> subplot(4,2,1),stem(n,xn1); >> title('x1(n)');
>> subplot(3,2,2),stem(n,Xk1); >> title('X1(k)');
>> subplot(4,2,3),stem(n,xn2); >> title('x2(n)');
>> subplot(3,2,4),stem(n,Xk2); >> title('X1(k)');
>> subplot(4,2,5),stem(n,yn); >> title('yn');
>> subplot(3,2,6),stem(n,Yk2); >> title('2*Xk1+3*Xk2');
>> subplot(4,2,7),stem(n,Yk1); >> title('DFT[y(n)]'); 求得的Y(k),如下所示: Yk=
23.0000 -7.5902+1.5388i 3.5902-0.3633i 3.5902+0.3633i -7.5902-1.5388i 运行结果如图13-1所示。
图13-1 例13-1有限长序列的傅里叶变换的线性性质
2 循环移位性质
如果有限长序列为x(n),长度为N,将x(n)左移m位,则y(n)=x((n+m)N)RN(n) x(n)左移m位的过程可由以下步骤获得:
(1)将x(n)以N为周期进行周期延拓,得到x(n)=x((n)N);
~~(2)将x(n)左移m位,得到x(n?m);
x(n?m)的主值序列,得到x(n)循环移位序列y(n)。 (3)取~有限长序列的移位也称为循环移位,原因是将x(n)左移m位时,移出的m位又依次从
右端进入主值区。下面举例说明。
例13-2 已知有限长序列x(n)=[1,2,3,4,5,6],求x(n)左移2位成为新的向量y(n),并画出循环移位的中间过程。 解 MATLAB程序如下:
>> xn=[1,2,3,4,5,6]; %建立xn序列 >> Nx=length(xn);nx=0:Nx-1; >> nx1=-Nx:2*Nx-1; %设立周期延拓的范围 >> x1=xn(mod(nx1,Nx)+1); %建立周期延拓序列 >> ny1=nx1-2;y1=x1; %将x1左移2位,得到y1 >> RN=(nx1>=0)&(nx1
1050-61050-61050-81050-8-6-4-20246810-6-4-20246810-4-2024681012-4-2024681012~图13-2 例13-2有限长序列的循环移位
3 循环折叠性质
如果要把有限长N点序列x(n)直接进行折叠,则x的下标(-n)将不在0≤n≤N-1区域内。但根据有限长序列傅里叶变换隐含的周期性,可以对变量(-n)进行N求余运算。即在MATLAB中,序列x(n)的折叠可以由y=x(mod(-nx,N)+1)得到。
有限长N点序列x(n)的循环折叠序列y(n)定义为
n=0?x(0)y(n)=x((-n)N)??
x(N-n)1?n?N-1?可以想像成,序列x(n)以反时针方向等间隔放置在一个圆周上,则x(-n)是将x(n)沿着
圆周顺时针方向等间隔放置。
循环折叠性质同样适用于频域。经循环折叠后,序列的DFT由下式给出:
Y(k)?DFT[x((?n)N)]?X(0)?X?((?k)N)???X(N-k)k=01?k?N-1
就是说,在时域循环折叠后的函数,其对应的DFT在频域也作循环折叠,并取X(k)的共轭。
例13-3 求x(n)=[1,2,3,4,5,6,7],循环长度分别取N=7,N=10。 (1)画出x(n)的图形; (2)画出x(-n)的图形。 解 MATLAB程序如下:
>> x1=[1,2,3,4,5,6,7]; %建立x(n),N=7序列 >> N1=length(x1);n1=0:N1-1; >> y1=x1(mod(-n1,N1)+1); %建立x(-n),N=7序列 >> N2=10;
>> x2=[x1,zeros(1,N2-N1)]; %建立x(n),N=10序列 >> n2=0:N2-1;
>> y2=x2(mod(-n2,N2)+1); %建立x(-n),N=10序列 >> subplot(2,2,1),stem(n1,x1,'k'); %画x(n),N=7 >> title('x(n),N=7');
>> subplot(2,2,3),stem(n1,y1,'k'); %画x(-n),N =7 >> title('x(-n),N=7');
>> subplot(2,2,2),stem(n2,x2,'k');% 画x(n),N=10 >> title('x(n),N=10');
>> subplot(2,2,4),stem(n2,y2,'k'); %画x(-n),N =10 >> title('x(-n),N=10'); 运行结果如图13-3所示。