实验二 用FFT做谱分析
一、
实验目的
1、进一步加深DFT 算法原理和基本性质的理解(因为FFT只是DF的一种快速算法,所以FFT的运算结果必然满足DFT 的基本性质)。
2、 熟悉FFT算法原理和FFT子程序的应用。
3、学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。
二、
实验原理
用FFT对信号作频谱分析是学习数字信号处理的重要内容。经常需要进行谱分析的信号是模拟信号和时域离散信号。对信号进行谱分析的重要问题是频谱分辨率D和分析误差。频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是2π/N≤D。可以根据此时选择FFT的变换区间N。误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时离散谱的包络才能逼近于连续谱,因此N要适当选择大一些。
周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。如果不知道信号周期,可以尽量选择信号的观察时间长一些。
对模拟信号的频谱时,首先要按照采样定理将其变成时域离散信号。如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。 三、
实验内容和步骤
1、对以下典型信号进行谱分析:
--完整版学习资料分享----
-----WORD格式--可编辑--专业资料-----
x1(n)R4(n)n1,x2(n)8n,0,4n,x3(n)n3,0,0n34n7
其它n0n34n7
其它n
x4(n)cos4n
x5(n)cos(n/4)cos(n/8)
x6(t)cos8tcos16tcos20t
2、对于以上信号,x1(n)~x5(n) 选择FFT的变换区间N为8和16 两种情况进行频谱分析。分别打印其幅频特性曲线。 并进行对比、分析和讨论;;x6(t)为模拟周期信号,选择 采样频率
Fs64Hz,变换区间N=16,32,64 三种情况进行谱分析。分别打印其幅频特性,并进行分析和讨
论。
3、令x7(n)=x4(n)+x5(n),用FFT计算8点和16点离散傅里叶变换X(k)=DFT[x(n)],并根据DFT的对称性,由X(k)求出X4(k)=DFT[x4(n)]和X5(k)=DFT[x5(n)]。
4、令x8(n)=x4+jx5(n),重复(3)。 四、实验结果及数据分析 1、实验程序:
%实验二,用FFT做谱分析 b=menu('
请
选
择
信
号
x1(n)--x8(n)','x1(n)','x2(n)','x3(n)','x4(n)','x5(n)','x6(n)','x7=x4+x5','x8=x4+jx5','Exit'); if b==9 b=0; end i=0; close all; while(b)
--完整版学习资料分享----
-----WORD格式--可编辑--专业资料-----
if b==6
temp=menu('请选择FFT变换区间长度N','N=16','N=32','N=64'); if temp==1
N=16; elseif temp==2 N=32; else N=64; end else
temp=menu('请选择FFT变换区间长度N','N=8','N=16','N=32'); fs=64; n=0:N-1;
x=cos(8*pi*n/fs)+cos(16*pi*n/fs)+cos(20*pi*n/fs);
if temp==1 N=8; elseif temp==2 N=16; else N=32; end if b==1
x=[1 1 1 1 0 0 0 0]; else if b==2 x=[1 2 3 4 4 3 2 1]; else if b==3
x=[4 3 2 1 1 2 3 4]; else if b==4 n=0:N-1; x=cos(0.25*pi*n); else if b==5 n=0:N-1;
x=sin((pi*n)/8);
--完整版学习资料分享----
-----WORD格式--可编辑--专业资料-----
else if b==7 n=0:N-1;
x=cos(n*pi/4)+sin(n*pi/8); else if b==8
n=0:N-1;
x=cos(n*pi/4)+j*sin(n*pi/8); end
end end
end
end
end end end
%%TO Calculate FFT f=fft(x,N); i=i+1; figure(i);
printf(x,abs(f),abs(N),abs(b)); if N==16 if b==7 k=conj(f);
x4=(f+k)/2; figure(i+2); subplot(2,2,1); stem(abs(x4),'.'); xlabel('k'); ylabel('|X4(k)|');
%Re[X7(k)=x4(k)
title('恢复后的X4(k)');
x5=(f-k)/2; subplot(2,2,3);
--完整版学习资料分享----
%jIm[X7(k)=X5(k)
-----WORD格式--可编辑--专业资料-----
Stem(abs(x5),'.'); xlabel('k'); ylabel('|X5(k)|');
title('恢复后的X5(k)');
end if b==8
k(1)=conj(f(1)); for m=2:N
k(m)=conj(f(N-m+2)); end fe=(x+k)/2;
%求X8(k)的共轭对称分量
fo=(x-k)/2;
%求X8(k)的共轭反对称分量 xr=ifft(fe,N); %xr=x4(n)
b=4; figure(i+1)
printf(xr,abs(fe),abs(N),abs(b)); xi=ifft(fo,N)/j; %xi=x5(n)
b=5; figure(i+2)
printf(xi,abs(f),abs(N),abs(b));
end end b=menu('
请
选
择
信
x1(n)--x8(n)','x1(n)','x2(n)','x3(n)','x4(n)','x5(n)','x6(n)','x7=x4+x5','x8=x4+jx5','Exit'); if b==9 b=0; end close all;end 2、实验结果图
--完整版学习资料分享----
号
-----WORD格式--可编辑--专业资料-----
图1 x1(n)的8点DFT
图2 x1(n)的16点DFT
--完整版学习资料分享----
-----WORD格式--可编辑--专业资料-----
图 3 x2(n)的8点DFT
图 4 x2(n)的16点DFT
--完整版学习资料分享----
-----WORD格式--可编辑--专业资料-----
图 5 x3(n)的8点DFT
图 6 x3(n)的16点DFT
--完整版学习资料分享----
-----WORD格式--可编辑--专业资料-----
图 7 x4(n)的8点DFT
图 8 x4(n)的16点DFT
--完整版学习资料分享----
-----WORD格式--可编辑--专业资料-----
图 9 x5(n)的8点DFT
图 10 x5(n)的16点DFT
--完整版学习资料分享----
-----WORD格式--可编辑--专业资料-----
图 11 x6(n)的16点DFT
图 12 x6(n)的32点DFT
--完整版学习资料分享----
-----WORD格式--可编辑--专业资料-----
图 13 x6(n)的64点DFT
图 14 x7(n)的8点DFT
--完整版学习资料分享----
-----WORD格式--可编辑--专业资料-----
图 15 x7(n)的16点DFT
图 16 |X4(k)|和|X5(k)|
--完整版学习资料分享----
-----WORD格式--可编辑--专业资料-----
图 17 x8(n)的8点DFT
图 18 x8(n)的16点DFT
--完整版学习资料分享----
-----WORD格式--可编辑--专业资料-----
10.5x(n)0x4(n)的波形05n61015-0.5|X(k)|4x4(n)的N=16点FFT2005K1015
图19 x8e(k)的IDFT[X8e(k)]
3、分析结果:
(1)图1和图2说明x1(n)的8点和16点采样; (2)因为x3(n)R4(n)的8点DFT和16点DFT分别是x1(n)的频谱函数
x2((n3))8R8(n),所以,x3(n)与x2(n)的8点DFT的模相
等,如图3和图5。但是,当N=16时,x3(n)与x2(n)不满足循环移位关系,所以图4和图6的模不同。 (2)x4(n)cos4n的周期为8,所以N=8和N=16均是其周期的整数倍,得到正确的
单一频率正弦波的频谱,仅在0.25π处有1根单一谱线。如图7和图8所示。 (4)x5(n)cos(n/4)cos(n/8)的周期为16,所以N=8不是其周期的整数
倍,得到的频谱不正确,如图9所示。N=16是其一个周期,得到正确的频谱,仅在0.25π和0.125π处有2根单一谱线, 如图10所示。
--完整版学习资料分享----
-----WORD格式--可编辑--专业资料-----
(5)x6(t)有3个频率成分,f1为0.5s。 采样频率Fs4Hz,f28Hz,f310Hz。所以x6(t)的周期
N=16时,观察时间
64Hz16f18f26.4f3。变换区间
Tp=16T=0.25s,不是x6(t)的整数倍周期,所以所得频谱不正确,如图11所示。变换区间N=32,64 时,观察时间Tp=0.5s,1s,是x6(t)的整数周期,所以所得频谱正确,如图12和13所示。图中3根谱线正好位于4Hz,8Hz,10Hz处。变换区间N=64 时频谱幅度是变换区间N=32 时2倍,这种结果正好验证了用DFT对中期序列谱分析的理论。
注意:
(1)用DFT(或FFT)对模拟信号分析频谱时,最好将X(k)的自变量k换算成对应的模拟频率fk,作为横坐标绘图,便于观察频谱。这样,不管变换区间N取信号周期的几倍,画出的频谱图中有效离散谐波谱线所在的频率值不变,如图12和13所示。
fkFs11kkk, k0,1,2,NNTTp,N1
(2)本程序直接画出采样序列N点DFT的模值,实际上分析频谱时最好画出归一化幅度谱,这样就避免了幅度值随变换区间N变化的缺点。本实验程序这样绘图只要是为了验证了用DFT对中期序列谱分析的理论。
五、思考题
1、当N=8时,x2n和x3n的幅频特性会相同吗?为什么?N=16呢?
答:当n=8时,幅频特性相同。因为它们函数表达的相同。当N=16时,模值不相同。 2、对于周期序列,如果周期不知道,如何用FFT进行谱分析?
答:设一个定长的值m与2m分析后误差大 则取4n,4m的谱分析与2m比较,直到2nm与2n1m 谱分析相差不多时便认为2nm次谱分析近似原来的谱分析。
--完整版学习资料分享----
因篇幅问题不能全部显示,请点此查看更多更全内容