实验四离散傅里叶变换的性质
一、实验目的
1. 熟悉matlab软件中离散傅里叶变换的实现方法及FFT函数的使用方法;
2. 通过软件仿真,加深对离散傅里叶变换性质的理解。
二、实验内容
1. 验证离散傅里叶变换的线性性质;
2. 掌握用matlab实现圆周移位的方法;
3. 验证圆周卷积与线性卷积的关系。
三、实验步骤
1. 验证线性性质
设两个有限长序列分别为xn1=[3,1,-2,2,3,4],xn2=[1,1,1,1],做4DFT[xn1]+2DFT[xn2],及DFT[4xn1+2xn2]的运算,比较它们的结果。
代码如下:
clear,N=20;n=[0:1:N-1];
xn1=[3,1,-2,2,3,4];n1=0:length(xn1)-1; %定义序列xn1
xn2=[1,1,1,1];n2=0:length(xn2)-1; %定义序列xn2
yn1=4*xn1;yn2=2*xn2;[yn,ny]=seqadd(yn1,n1,yn2,n2); %计算4xn1+2xn2
xk1=fft(xn1,N);xk2=fft(xn2,N); %分别求DFT[xn1] 和DFT[xn2]
yk0=4*xk1+2*xk2; %计算4DFT[xn1]+2DFT[xn2]
yk=fft(yn,N); %计算DFT[4xn1+2xn2]
subplot(2,1,1);stem(n,yk0);title('傅里叶变换之和') %显示4DFT[xn1]+2DFT[xn2]
subplot(2,1,2);stem(n,yk);title('序列和之傅里叶变换') %显示DFT[4xn1+2xn2]
运行结果如图1所示,从图中可知,用两种方法计算的DFT完全相等,所以离散傅里叶变换的线性性质得到验证。
图1 离散傅里叶变换的线性性质
2. 圆周移位
设x=[7,6,5,4,3,2],位于主值区间,现要把x分别圆周右移两位,圆周左移1位,成为新主值区间的向量,以此观察圆周移位的特点。
代码如下:
x=[7,6,5,4,3,2];Nx=length(x);nx=0:Nx-1; % 给出x序列
nx1=-Nx:2*Nx-1;x1=x(mod(nx1,Nx)+1); % 延拓为周期向量x1,注意mod用法
[y1,ny1]=seqshift(x1,nx1,2); % 将x1右移两位,得到y1
[y2,ny2]=seqshift(x1,nx1,-1); % 将x1左移三位,得到y2
RN=(nx1>=0)&(nx1<Nx); % 在x1的位置向量nx1上设置主值窗
RN1=(ny1>=0)&(ny1<Nx); % 在y1的位置向量ny1上设置主值窗
RN2=(ny2>=0)&(ny2<Nx); % 在y2的位置向量ny2上设置主值窗
subplot(6,1,1),stem(nx1,RN.*x1) % 在子图上画出x1的主值
title('主值序列x')
axis([-6,15,0,10])
subplot(6,1,2),stem(nx1,x1) % 画出x1
title('周期序列x1')
axis([-6,15,0,10])
subplot(6,1,3),stem(ny1,y1) % 画出y1
title('移位周期序列y1')
axis([-6,15,0,10])
subplot(6,1,4),stem(ny2,y2) % 画出y2
title('移位周期序列y2')
axis([-6,15,0,10])
subplot(6,1,5),stem(ny1,RN1.*y1) % 画出y1的主值
title('y1的主值序列y')
axis([-6,15,0,10])
subplot(6,1,6),stem(ny2,RN2.*y2) % 画出y2的主值
title('y2的主值序列y')
axis([-6,15,0,10])
运行结果如图2所示。
图2 序列的圆周移位
3. 圆周卷积和与线性卷积和
设x1=[1,2,3,0];x2=[5,4,-3,-2];分别求它们的N点圆周卷积和与线性卷积和,并做比较。
代码如下:
圆周卷积和函数
function y = circonv(x,h,N)
if length(x) > N
error('N 必须>= x的长度')
end
% 检查h的长度
if length(h) > N
error('N 必须>= h的长度')
end
x=[x,zeros(1,N-length(x))]; % 将x的长度扩展至N
h=[h,zeros(1,N-length(h))]; % 将h的长度扩展至N
m = [0:N-1];
hm = h(mod(-m,N)+1); % 将h循环折叠
H = toeplitz(hm,[0,h(2:N)]); % 用toeplitz函数产生循环卷积矩阵
y = x*H; % 用向量-矩阵乘法求卷积
x1与x2的N(N分别取4、7、10)点圆周卷积和及线性卷积和
x1=[1,2,3,0];x2=[5,4,-3,-2];
y1=circonv(x1,x2,4)
y2=circonv(x1,x2,7)
y3=circonv(x1,x2,10)
y4=conv(x1,x2)
运行结果如下:
y1 =
-8 8 20 4
y2 =
5 14 20 4 -13 -
6 0
y3 =
5 14 20 4 -13 -
6 0 0 0 0
y4 =
5 14 20 4 -13 -
6 0
从计算结果中,可得,当N≥N1+N2-1时,圆周卷积和与线性卷积和相等。