用FFT做谱分析.docx
- 文档编号:4805370
- 上传时间:2022-12-09
- 格式:DOCX
- 页数:17
- 大小:166.42KB
用FFT做谱分析.docx
《用FFT做谱分析.docx》由会员分享,可在线阅读,更多相关《用FFT做谱分析.docx(17页珍藏版)》请在冰豆网上搜索。
用FFT做谱分析
实验二用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、对以下典型信号进行谱分析:
2、对于以上信号,x1(n)~x5(n)选择FFT的变换区间N为8和16两种情况进行频谱分析。
分别打印其幅频特性曲线。
并进行对比、分析和讨论;;x6(t)为模拟周期信号,选择采样频率
变换区间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’);
ifb==9
b=0;
end
i=0;
closeall;
while(b)
ifb==6
temp=menu('请选择FFT变换区间长度N’,’N=16’,’N=32',’N=64’);
iftemp==1
N=16;
elseiftemp==2
N=32;
elseN=64;
end
fs=64;
n=0:
N—1;
x=cos(8*pi*n/fs)+cos(16*pi*n/fs)+cos(20*pi*n/fs);
else
temp=menu(’请选择FFT变换区间长度N',’N=8’,’N=16',’N=32');
iftemp==1
N=8;
elseiftemp==2
N=16;
elseN=32;
end
ifb==1
x=[11110000];
elseifb==2
x=[12344321];
elseifb==3
x=[43211234];
elseifb==4
n=0:
N-1;
x=cos(0.25*pi*n);
elseifb==5
n=0:
N-1;
x=sin((pi*n)/8);
elseifb==7
n=0:
N-1;
x=cos(n*pi/4)+sin(n*pi/8);
elseifb==8
n=0:
N—1;
x=cos(n*pi/4)+j*sin(n*pi/8);
end
end
end
end
end
end
end
end
%%TOCalculateFFT
f=fft(x,N);
i=i+1;
figure(i);
printf(x,abs(f),abs(N),abs(b));
ifN==16
ifb==7
k=conj(f);
x4=(f+k)/2;%Re[X7(k)=x4(k)
figure(i+2);
subplot(2,2,1);
stem(abs(x4),’.’);
xlabel(’k');
ylabel(’|X4(k)|');
title('恢复后的X4(k)’);
x5=(f-k)/2;%jIm[X7(k)=X5(k)
subplot(2,2,3);
Stem(abs(x5),’.');
xlabel(’k’);
ylabel(’|X5(k)|');
title(’恢复后的X5(k)’);
end
ifb==8
k
(1)=conj(f
(1));
form=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’);
ifb==9
b=0;
end
closeall;end
2、实验结果图
图1x1(n)的8点DFT
图2x1(n)的16点DFT
图3x2(n)的8点DFT
图4x2(n)的16点DFT
图5x3(n)的8点DFT
图6x3(n)的16点DFT
图7x4(n)的8点DFT
图8x4(n)的16点DFT
图9x5(n)的8点DFT
图10x5(n)的16点DFT
图11x6(n)的16点DFT
图12x6(n)的32点DFT
图13x6(n)的64点DFT
图14x7(n)的8点DFT
图15x7(n)的16点DFT
图16|X4(k)|和|X5(k)|
图17x8(n)的8点DFT
图18x8(n)的16点DFT
图19x8e(k)的IDFT[X8e(k)]
3、分析结果:
(1)图1和图2说明
的8点DFT和16点DFT分别是
的频谱函数的8点和16点采样;
(2)因为
,所以,
与
的8点DFT的模相等,如图3和图5。
但是,当N=16时,
与
不满足循环移位关系,所以图4和图6的模不同。
(2)
的周期为8,所以N=8和N=16均是其周期的整数倍,得到正确的单一频率正弦波的频谱,仅在0。
25π处有1根单一谱线.如图7和图8所示。
(4)
的周期为16,所以N=8不是其周期的整数倍,得到的频谱不正确,如图9所示。
N=16是其一个周期,得到正确的频谱,仅在0。
25π和0。
125π处有2根单一谱线,如图10所示。
(5)
有3个频率成分,
。
所以
的周期为0。
5s。
采样频率
。
变换区间N=16时,观察时间Tp=16T=0。
25s,不是
的整数倍周期,所以所得频谱不正确,如图11所示。
变换区间N=32,64时,观察时间Tp=0.5s,1s,是
的整数周期,所以所得频谱正确,如图12和13所示。
图中3根谱线正好位于
处.变换区间N=64时频谱幅度是变换区间N=32时2倍,这种结果正好验证了用DFT对中期序列谱分析的理论。
注意:
(1)用DFT(或FFT)对模拟信号分析频谱时,最好将X(k)的自变量k换算成对应的模拟频率fk,作为横坐标绘图,便于观察频谱。
这样,不管变换区间N取信号周期的几倍,画出的频谱图中有效离散谐波谱线所在的频率值不变,如图12和13所示。
(2)本程序直接画出采样序列N点DFT的模值,实际上分析频谱时最好画出归一化幅度谱,这样就避免了幅度值随变换区间N变化的缺点.本实验程序这样绘图只要是为了验证了用DFT对中期序列谱分析的理论。
五、思考题
1、当N=8时,x2n和x3n的幅频特性会相同吗?
为什么?
N=16呢?
答:
当n=8时,幅频特性相同。
因为它们函数表达的相同。
当N=16时,模值不相同。
2、对于周期序列,如果周期不知道,如何用FFT进行谱分析?
答:
设一个定长的值m与2m分析后误差大则取4n,4m的谱分析与2m比较,直到
与
谱分析相差不多时便认为
次谱分析近似原来的谱分析。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FFT 谱分析