您的当前位置:首页正文

用FFT做谱分析

2024-08-05 来源:东饰资讯网
-----WORD格式--可编辑--专业资料-----

实验二 用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)n1,x2(n)8n,0,4n,x3(n)n3,0,0n34n7

其它n0n34n7

其它n

x4(n)cos4n

x5(n)cos(n/4)cos(n/8)

x6(t)cos8tcos16tcos20t

2、对于以上信号,x1(n)~x5(n) 选择FFT的变换区间N为8和16 两种情况进行频谱分析。分别打印其幅频特性曲线。 并进行对比、分析和讨论;;x6(t)为模拟周期信号,选择 采样频率

Fs64Hz,变换区间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((n3))8R8(n),所以,x3(n)与x2(n)的8点DFT的模相

等,如图3和图5。但是,当N=16时,x3(n)与x2(n)不满足循环移位关系,所以图4和图6的模不同。 (2)x4(n)cos4n的周期为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。 采样频率Fs4Hz,f28Hz,f310Hz。所以x6(t)的周期

N=16时,观察时间

64Hz16f18f26.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所示。

fkFs11kkk, k0,1,2,NNTTp,N1

(2)本程序直接画出采样序列N点DFT的模值,实际上分析频谱时最好画出归一化幅度谱,这样就避免了幅度值随变换区间N变化的缺点。本实验程序这样绘图只要是为了验证了用DFT对中期序列谱分析的理论。

五、思考题

1、当N=8时,x2n和x3n的幅频特性会相同吗?为什么?N=16呢?

答:当n=8时,幅频特性相同。因为它们函数表达的相同。当N=16时,模值不相同。 2、对于周期序列,如果周期不知道,如何用FFT进行谱分析?

答:设一个定长的值m与2m分析后误差大 则取4n,4m的谱分析与2m比较,直到2nm与2n1m 谱分析相差不多时便认为2nm次谱分析近似原来的谱分析。

--完整版学习资料分享----

因篇幅问题不能全部显示,请点此查看更多更全内容