实验二用FFT作谱分析之欧阳文创编_第1页
实验二用FFT作谱分析之欧阳文创编_第2页
实验二用FFT作谱分析之欧阳文创编_第3页
实验二用FFT作谱分析之欧阳文创编_第4页
实验二用FFT作谱分析之欧阳文创编_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、欧阳文创编实验二用FFT作谱分析时间:2021.03. 12创作:欧阳文1. 实验目的(1) 进一步加深DFT算法原理和基本性质的理解(因为 FFT只是DFT的一种快速算法,所以FFT的运算结果必然满 足DFT的基本性质)o(2) 熟悉FFT算法原理和FFT子程序的应用。(3) 学习用FFT对连续信号和时域离散信号进行谱分析 的方法,了解可能出现的分析误差及其原因,以便在实际屮 正确应用FFTo2. 实验步骤(1) 复习DFT的定义、性质和用DFT作谱分析的有关内 容。(2) 复习FFT算法原理与编程思想,并对照DIT-FFT运 算流图和程序框图,读懂本实验提供的FFT子程序。(3) 编制信号

2、产生子程序,产生以下典型信号供谱分 析用:编写主程序。/WIT-FFT 函数(C 语言)*/fft基 2DITFFT 函数要求:指向复数数组指针X, FFT长度为才,m为正整数FFT输岀结果放在输入复数数组中。/*计算N点FFT子程序*/* xr:二信号序列实部,xi:二信号序列虚部,N:二FFT变换区间长度N二2、1*/*如果信号长度小于N,应该给xr, xi后面补0 */*计算如果X (K)的实部和虚部分别储存在数组xr和xi中*/Void Fft(double xr, double xi, int N, int M)int L, B, J, P, k, i;double rPartKB,

3、 iPartKB;double rCf128, iCf128/*计算旋转因子*/double PI2二 8. 0 * atan(l. 0);for(i=0; iN; i+)rCfi=cos(i*PI2/N);iCfi二sin(i*PI2/N);ChangeOrder( xr, xi, N );/*计算各级蝶形*/for(L=l; L=M; L+)B二(int) (pow(2, (LT) )+0. 5);for(J=0; J=B-1; J+)P二J*(int) (pow(2, (M-L) +0. 5);for (k=J; k二NT ; k+二(int) (pow (2, L) +0. 5) rP

4、artKB = xrk+B*rCfP-xik+B*iCfP;iPartKB = xik+B*rCfP+xrk+B*iCfP xrk+B = xrk- rPartKB;xik+B二 x订k- iPartKB;xrk二 xrk + rPartKB;xik = xik + iPartKB;/*倒序子程序*/void ChangeOrdor(double xr, double xi, int N )int LH, Nl, I, J, K;double T;LH 二 N/2; J 二 LH; N1 二 N - 2;for(I=l;I=Nl;I+)if (I=K)J 二 J-K;K 二(int)(K/2+

5、0. 5);J二J+K;(1)按实验内容要求,上机实验并写出实验报告。本实验采用的是MATLAB语言,因此FFT子程序直接调 用MATLAB语言中的FFT函数就可以实现。下面给出完整的 MATLAB程序%实验二,用FFT做谱分析b=menu(,请选择信号xl (n) -x8 (n) , xl (n) , x2 (n) , x3 (n), x4 (n), x5 (n) , x6 (n ),x7二x4+x5, x8二x4+jx5, Exit,);if b=9b=0;endi 二0;close all;while(b)if b=6temp二menu (请选择FFT变换区间长度N,N=16,N=32,

6、N=64);if temp=lN 二 16;elseif temp=2N 二 32;else N二64;endfs二64;n二 O:NT;x二cos (8*pi*n/fs)+cos(16*pi*n/fs)+cos(20*pi*n/fs);elsetemp二menu (请选择FFT变换区间长度N , N二8, N二 16, N二32);if temp二二1N二 8;elseif temp二二2N 二 16;else N二32;endif b二二1x 二1 1 1 1 0 0 0 0;else if b二二2x=l 2 3 4 4 3 2 1;else if b3x二4 3 2 1 1 2 3 4

7、;else if b=4n=0:N-l;x=cos(0. 25*pi*n);else if b=5n=0:N-l;x二sin(pi*n)/8);else if b二二7n=0:N-l;x=cos(n*pi/4)+sin(n*pi/8);else if b8n=0:N-l;x=cos(n*pi/4)+j*sin(n*pi/8);endendendendendendendend%T0 Calculate FFTf二f f t (x, N);i二i+1;figure(i);printf(x, abs(f), abs(N), abs(b);if N=16if b二二7k=conj (f);x4=(f+

8、k)/2;%ReX7(k)=x4(k)figure (i+2);subplot (2, 2, 1):stem(abs (x4)xlabel ( k);ylabel C |X4(k)|);title(恢复后的 X4(k);x5=(f-k)/2;%jImX7(k)二X5(k)subplot (2, 2, 3);Stem(abs (x5)xlabel ( k);ylabel C |X5(k)|,);title(恢复后的 X5(k);endif b二二8k二conj (f (1);for m二2:Nk(m)=conj(f(Nm+2);endfe=(x+k)/2;%求X8 (k)的共觇对称分量fo-(x

9、-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);endendb=menu(,请选择信号xl (n) -x8 (n) , xl (n) , x2 (n) , x3 (n), x4 (n), x5 (n) , x6 (n),x7二x4+x5, x8二x4+jx5, Exit);if b=9b=0;e

10、ndclose all;end(5)按实验内容要求,上机实验,并写出实验报告。3. 上机实验内容(1)对2屮所给出的信号逐个进行谱分析。下面给出 针对各信号的FFT变换区间N以及对连续信号&(r)的采样 频率供实验时参考。Xi (?7),疋(刀),禺(刀),X (ii), x5n):W8, 16xdt):尺二64Hz, 216, 32, 64xAri)N二8N二16由以上两个图分析如下:离散傅里叶变换的N点变换在频 域范围内表现为对傅里叶变换即Z变换在单位圆上的抽样。 所以N取8点时,k二0, 1, 2, 3, 4, 5, 6, 7与N取16点时, k二0, 2, 4, 6, & 10, 12

11、, 14的离散傅里叶变换值对应相等,即它 们都等于原信号在w二0、龙/8、兀/4、3兀/8、4兀/8、5兀/8、 6兀/8、6/8的傅里叶变换,这在上面两图可以明显看出。 所以,离散傅里叶变换实际上是对该序列在频域范围内以 2兀/N的间隔进行抽样。xAn)N二 8N二 16(?7)N二 8N 二 16X4 (n)N二 8N二 16从以上两组图可以看出,若按XI (n)进行分析,则明显不 对。现分析如下:原信号周期为16,所以当N二8时,未能取 完一个周期的值,N二16则取完了一个周期的值,所以这是两 个不同的序列,所以按照XI (n)的分析方式是不对的,因为本身它们的傅里叶变换就是不一样的。由

12、于离散傅里叶变换 是该序列周期延拓后所对应的傅里叶级数变换的主值序列, 所以,当N二16时,所得的DFT值与X5(n)的傅里叶级数变换 的主值序列是一致的,而N二8时是X5(n)的部分序列的周期 延拓后的傅里叶级数变换的主值序列,因此两者的值是不同 的。X6 (n)N二 16N 二 32N=64於 血穴Lxte Qwliop比BEG Q3l k 02紳 w QI 0 1020304060703 tdfcc C:伽冷 乡 GB)is:wB332533竹105C工跑)的*6)占FFT0530405066702x/开笛|OQ 二竝面栏王见田r:)|彳mtud|原连续信号的周期为0.5,当采样频率尺二

13、64Hz时,所形成的序列周期为0.5*64二32。所以只有N32,才能取完一个周 期的序列。这一点,从上面三个图可以清晰看出。其屮232 和N二16的图形分析,可以参考&(刀)的分析。N二32和N二64的图形分析,可以参考禺5)的分析。(2)令x(h)=xi(n)+x5(n),用FFT计算8点和16点离散 傅里叶变换。X(k) =DFT x(n)X7N二 8J期内的所有序列,尽管N二8时的Eu QcsHe 理Mtw Ma $ 蝕 w B S P分,但是它们确属两个不同的序奂不同,即不能按照為5)的进行孚傅里叶级数的主值序列不同,即(27),重复o?)的频谱分析,从以上的图可以看心即常腺皆霁比;叮映为共辘对称部分合共个反对称部分,则可以得出原信号的实部对应离散傅里叶变换的共辘对称部分,原信号的虚部对应离散信号的共辘反对称部分。4. 思考题(1)在#8时,卫(刃和必5)的幅频特性会相同吗?为什么?庐16呢?N=8时一样,N= 1 6时不一样。因为DFT变换 可以看成是将该序列进行周期延拓后的傅里叶级数变换的主 值序列。当N二8时,两序列进行周期延拓后序列相同,所以 其傅里叶级数变换的主值序列也相同,进而DFT变换也相 同。而当216时,两序列进行周期延拓后序列不相同,所 以其傅里叶级数变换的主值序列也相同

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论