数字信号实验2.docx
《数字信号实验2.docx》由会员分享,可在线阅读,更多相关《数字信号实验2.docx(14页珍藏版)》请在冰豆网上搜索。
数字信号实验2
实验二快速Fourier变换(FFT)及其应用
一、实验目的
1.在理论学习的基础上,通过本实验,加深对FFT的理解,熟悉FFT子程序。
2.熟悉应用FFT对典型信号进行频谱分析的方法。
3.了解应用FFT进行信号频谱分析过程中可能出现的问题以便在实际中正确应用FFT。
4.熟悉应用FFT实现两个序列的线性卷积的方法。
5.初步了解用周期图法作随机信号谱分析的方法。
二、实验原理与方法
在各种信号序列中,有限长序列信号处理占有很重要地位,对有限长序列,我们可以使
用离散Fouier变换(DFT)。
这一变换不但可以很好的反映序列的频谱特性,而且易于用快速算法在计算机上实现,当序列x(n)的长度为N时,它的DFT定义为:
反变换为:
有限长序列的DFT是其Z变换在单位圆上的等距采样,或者说是序列Fourier变换的等距采样,因此可以用于序列的谱分析。
FFT并不是与DFT不同的另一种变换,而是为了减少DFT运算次数的一种快速算法。
它是对变换式进行一次次分解,使其成为若干小点数的组合,从而减少运算量。
常用的FFT是以2为基数的,其长度
。
它的效率高,程序简单,使用非常方便,当要变换的序列长度不等于2的整数次方时,为了使用以2为基数的FFT,可以用末位补零的方法,使其长度延长至2的整数次方。
三、实验内容及步骤
实验中用到的信号序列:
a)Gaussian序列
b)衰减正弦序列
c)三角波序列
d)反三角波序列
上机实验内容:
(1)、观察高斯序列的时域和幅频特性,固定信号xa(n)中参数p=8,改变q的值,使q分别等于2,4,8,观察它们的时域和幅频特性,了解当q取不同值时,对信号序列的时域幅频特性的影响;固定q=8,改变p,使p分别等于8,13,14,观察参数p变化对信号序列的时域及幅频特性的影响,观察p等于多少时,会发生明显的泄漏现象,混叠是否也随之出现?
记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。
%%定义高斯序列
%function[Xa,Fa]=gauss(p,q)
%n=[0:
15];
%Xa(n+1)=exp(-(n+1-p).^2./q);
%F=fft(Xa);
%Fa=abs(F);
clearall;
%%%%%%%p=8,q=2%%%%%%%%%%%%
[Xa1,Fa1]=gauss(8,2);
k=0:
15;
subplot(5,2,1);plot(k,Xa1);
xlabel('n');ylabel('时域特性');text(10,0.5,'p=8,q=2');
subplot(5,2,2);plot(k,Fa1);
xlabel('n');ylabel('幅频特性');text(8,3,'p=8,q=2');
%%%%%%%p=8,q=4%%%%%%%%%%%%
[Xa2,Fa2]=gauss(8,4);
subplot(5,2,3);plot(k,Xa2);
xlabel('n');ylabel('时域特性');text(10,0.5,'p=8,q=4');
subplot(5,2,4);plot(k,Fa2);
xlabel('n');ylabel('幅频特性');text(8,3,'p=8,q=4');
%%%%%%%p=8,q=8%%%%%%%%%%%%
[Xa3,Fa3]=gauss(8,8);
subplot(5,2,5);plot(k,Xa3);
xlabel('n');ylabel('时域特性');text(10,0.5,'p=8,q=8');
subplot(5,2,6);plot(k,Fa3);
xlabel('n');ylabel('幅频特性');text(8,3,'p=8,q=8');
%%%%%%%p=13,q=8%%%%%%%%%%
[Xa4,Fa4]=gauss(13,8);
subplot(5,2,7);plot(k,Xa4);
xlabel('n');ylabel('时域特性');text(10,0.5,'p=13,q=8');
subplot(5,2,8);plot(k,Fa4);
xlabel('n');ylabel('幅频特性');text(8,3,'p=13,q=8');
%%%%%%%p=14,q=8%%%%%%%%%%
[Xa5,Fa5]=gauss(14,8);
subplot(5,2,9);plot(k,Xa5);
xlabel('n');ylabel('时域特性');text(10,0.5,'p=14,q=8');
subplot(5,2,10);plot(k,Fa5);
xlabel('n');ylabel('幅频特性');text(8,3,'p=14,q=8');
(2)、观察衰减正弦序列xb(n)的时域和幅频特性,a=0.1,f=0.0625,检查谱峰出现位置是否正确,注意频谱的形状,绘出幅频特性曲线,改变f,使f分别等于0.4375和0.5625,观察这两种情况下,频谱的形状和谱峰出现位置,有无混叠和泄漏现象?
说明产生现象的原因。
%定义衰减正弦序列
%function[Xb,Fb]=downsin(a,f)
%n=[0:
15];
%Xb(n+1)=exp(-a.*n).*sin(2*pi*f.*n);%自然对数的底:
e=:
2.71828182845904523536
%F=fft(Xb);
%Fb=abs(F);
clearall;
k=0:
15;
%%%%%%%%%a=0.1,f=0.0.0625%%%%%%%%%%%
[Xb,Fb]=downsin(0.1,0.0625);
subplot(3,2,1);plot(k,Xb);
xlabel('n');ylabel('时域特性');text(8,0.5,'a=0.1,f=0.0625');
subplot(3,2,2);plot(k,Fb);
xlabel('n');ylabel('幅值特性');text(10,3,'a=0.1,f=0.0625');
%%%%%%%%%a=0.1,f=0.4375%%%%%%%%%%%
[Xb1,Fb1]=downsin(0.1,0.4375);
subplot(3,2,3);plot(k,Xb1);
xlabel('n');ylabel('时域特性');text(8,0.5,'a=0.1,f=0.4375');
subplot(3,2,4);plot(k,Fb1);
xlabel('n');ylabel('幅值特性');text(10,3,'a=0.1,f=0.4375');
%%%%%%%%%a=0.1,f=0.5625%%%%%%%%%%
[Xb2,Fb2]=downsin(0.1,0.5625);
subplot(3,2,5);plot(k,Xb2);
xlabel('n');ylabel('时域特性');text(8,0.5,'a=0.1,f=0.5625');
subplot(3,2,6);plot(k,Fb2);
xlabel('n');ylabel('幅值特性');text(10,3,'a=0.1,f=0.5625');
(3)、观察三角波和反三角波序列的时域和幅频特性,用N=8点FFT分析信号序列xc(n)和xd(n)的幅频特性,观察两者的序列形状和频谱曲线有什么异同?
绘出两序列及其幅频特性曲线。
在xc(n)和xd(n)末尾补零,用N=16点FFT分析这两个信号的幅频特性,观察幅频特性发生了什么变化?
两情况的FFT频谱还有相同之处吗?
这些变化说明了什么?
clearall;
n=[0:
3];k=[1:
8];
%定义三角波序列
Xc(n+1)=n;Xc(n+5)=4-n;
%三角波特性
subplot(2,1,1);plot(k-1,Xc);
xlabel('n');ylabel('时域特性');text(1,3,'三角波');
subplot(2,1,2);plot(k-1,abs(fft(Xc)));
xlabel('k');ylabel('幅频特性');text(4,10,'三角波');
%末尾补0,计算32点FFT
Xc(9:
32)=0;Xd(9:
32)=0;k=1:
32;figure;
%三角波特性
subplot(2,1,1);plot(k-1,Xc);
xlabel('n');ylabel('时域特性');text(1,3,'三角波');
subplot(2,1,2);plot(k-1,abs(fft(Xc)));
xlabel('k');ylabel('幅频特性');text(4,10,'三角波');
(4)、一个连续信号含两个频率分量,经采样得
x(n)=sin2π*0.125n+cos2π*(0.125+Δf)nn=0,1……,N-1
已知N=16,Δf分别为1/16和1/64,观察其频谱;当N=128时,Δf不变,其结果有何不同,为什么?
clearall;
%%%%%%%N=16%%%%%%%%%%%%
N=16;detf=1/16;n=[0:
N-1];
x1(n+1)=sin(2*pi*0.125.*n)+cos(2*pi*(0.125+detf).*n);
detf=1/64;x2(n+1)=sin(2*pi*0.125.*n)+cos(2*pi*(0.125+detf).*n);
%%%%%%%N=16,detf=1/16%%%%%%%%%%%%
subplot(2,2,1);stem(n,x1);hold;plot(n,x1);
xlabel('n');ylabel('时域特性');text(6,1,'N=16,detf=1/16');
subplot(2,2,2);stem(n,abs(fft(x1)));
xlabel('n');ylabel('幅值特性');text(6,4,'N=16,detf=1/16');
%%%%%%%N=16,detf=1/64%%%%%%%%%%%%
subplot(2,2,3);stem(n,x2);
xlabel('n');ylabel('时域特性');text(6,1,'N=16,detf=1/64');
subplot(2,2,4);stem(n,abs(fft(x2)));
xlabel('n');ylabel('幅值特性');text(6,4,'N=16,detf=1/64');
%%%%%%%N=128%%%%%%%%%%%%
N=128;detf=1/16;n=[0:
N-1];
x3(n+1)=sin(2*pi*0.125.*n)+cos(2*pi*(0.125+detf).*n);
detf=1/64;
x4(n+1)=sin(2*pi*0.125.*n)+cos(2*pi*(0.125+detf).*n);
%%%%%%%N=128,detf=1/16%%%%%%%%%%%%
figure;subplot(2,2,1);stem(n,x3);
xlabel('n');ylabel('时域特性');axis([0128-22]);text(6,1.5,'N=128,detf=1/16');
subplot(2,2,2);stem(n,abs(fft(x3)));
xlabel('n');ylabel('幅值特性');axis([0128-1070]);text(40,60,'N=128,detf=1/16');
%%%%%%%N=128,detf=1/64%%%%%%%%%%%%
subplot(2,2,3);stem(n,x3);
xlabel('n');ylabel('时域特性');axis([0128-22]);text(6,1.5,'N=128,detf=1/16');
subplot(2,2,4);stem(n,abs(fft(x4)));
xlabel('n');ylabel('幅值特性');axis([0128-1070]);text(40,60,'N=128,detf=1/16');
(5)、用FFT分别实现xa(n)(p=8,q=2)和xb(n)(a=0.1,f=0.0625)的16点圆周卷积和线性卷积。
clearall;
N=16;
n=0:
N-1;
p=8;q=2;
Xa(n+1)=exp(-(n-p).^2./q);
a=0.1;f=0.0625;
Xb(n+1)=exp(-a.*n).*sin(2*pi*f.*n);
%16点循环卷积
Fa=fft(Xa);Fb=fft(Xb);
Fx=Fa.*Fb;
X51=ifft(Fx);
stem(n,X51);
%16点线性卷积
Xa(N+1:
2*N-1)=0;
Xb(N+1:
2*N-1)=0;
Fa=fft(Xa);Fb=fft(Xb);
Fc=Fa.*Fb;
X52=ifft(Fc);
figure;stem(1:
2*N-1,X52);
(7)用FFT分别计算xa(n)(p=8,q=2)和xb(n)(a=0.1,f=0.0625)的16点循环相关和线性相关,问一共有多少种结果,他们之间有何异同点。
clearall;
N=16;
n=0:
N-1;
p=8;q=2;
Xa(n+1)=exp(-(n-p).^2./q);
a=0.1;f=0.0625;
Xb(n+1)=exp(-a.*n).*sin(2*pi*f.*n);
N=length(Xa);
%16点循环相关
Fa=fft(Xa,2*N);Fb=fft(Xb,2*N);
Fx=conj(Fa).*Fb;
X71=real(ifft(Fx));
X71=[X71(N+2:
2*N)X71(1:
N)];
n=(-N+1):
(N-1);stem(n,X71);
%16点线性相关
Xa(N+1:
2*N-1)=0;
Xb(N+1:
2*N-1)=0;
Fa=fft(Xa);Fb=fft(Xb);
Fc=conj(Fa).*Fb;
X72=real(ifft(Fc));
figure;stem(1:
2*N-1,X72);
(8)用FFT分别计算xa(n)(p=8,q=2)和xb(n)(a=0.1,f=0.0625)的自相关函数。
clearall;
N=16;
n=0:
N-1;
p=8;q=2;
Xa(n+1)=exp(-(n-p).^2./q);
a=0.1;f=0.0625;
Xb(n+1)=exp(-a.*n).*sin(2*pi*f.*n);%自然对数的底:
e=:
2.71828182845904523536
N=length(Xa);
%Xa(n)16点自相关
Fa=fft(Xa,2*N);Fb=fft(Xb,2*N);
F1=conj(Fa).*Fa;
X81=real(ifft(F1));
X81=[X81(N+2:
2*N)X81(1:
N)];
n=(-N+1):
(N-1);
subplot(2,1,1);stem(n,X81);
xlabel('n');ylabel('幅度');
%Xb(n)16点自相关
Fb=fft(Xb,2*N);
F2=conj(Fb).*Fb;
X82=real(ifft(F2));
X82=[X82(N+2:
2*N)X82(1:
N)];
%n=(-N+1):
(N-1);
subplot(2,1,2);stem(n,X82);
xlabel('n');ylabel('幅度');
四思考题
1.实验中的信号序列x
(n)和x
(n),在单位圆上的Z变换频谱
和
会相同吗?
如果不同,你能说出哪一个低频分量更多一些吗?
为什么?
答:
不相同,它们在单位圆上的Z变换频谱中,xc(n)的低频分量比xd(n)的多一些。
2.对一个有限长序列进行离散傅里叶变换(DFT),等价于将该序列周期延拓后进行傅里叶级数展开。
因为DFS也只是取其中一个周期来运算,所以FFT在一定条件下也可以用分析周期信号序列。
如果正弦信号sin(2
fn),f=0.1,用16点的FFT来做DFS运算,得到的频谱是信号本身的真实谱吗?
答:
只有当DFS变换的点数N与进行FFT变换的点数K相同的时候,才可以认为DFS与FFT的变换是等价的,可以用DFS来分析FFT。
但是在N与K不相等的时候,DFS与FFT变换不等价。
五实验总结
通过本次试验,我对快速Fourier变换(FFT)有了更深一步的了解,熟悉了应用FFT对典型信号进行频谱分析的方法,了解了应用FFT进行信号频谱分析过程中可能出现的问题以便在实际中正确应用FFT。
熟悉了应用FFT实现两个序列的线性卷积的方法,初步了解了用周期图法作随机信号谱分析的方法。