实验二用用FFT做谱分析.docVIP

  • 18
  • 0
  • 约4.77千字
  • 约 8页
  • 2017-08-24 发布于重庆
  • 举报
实验二用用FFT做谱分析.doc

实验二 用 用 FFT 做谱分析 一. 实验目的 (1) 进一步加深 DFT 算法原理和基本性质的理解 (因为 FFT 只是 DFT 的一种快速算法,所以 FFT 的运算结果必然满足 DFT 的基本性质) 。 (2) 熟悉 FFT 算法原理和 FFT 子程序的应用。 (3) 学习用 FFT 对连续信号和时域离散信号进行谱分析的方法, 了解 可能出现的分析误差及其原因,以便在实际中正确应用 FFT. 实验原理 二.实验原理 1.快速傅里叶变换(FFT)算法 长度为N的序列x(n)的离散傅里叶变换X(k)为: N点的DFT可以分解为两个N/2点的DFT,每个N/2点的DFT又可以分解为两个N/4的DFT。以此类推,当N为2的整数次幂时().由于每分解一次降低一阶幂次,所以通过M此的分解,最后全部为一系列2点DFT运算。以上就是按时间抽取的快速傅里叶变换(FFT)算法。当需要进行变换的序列的长度不是2的整数次方的时候,为了使以2为基的FFT,可以用末尾补零的方法,使其长度延长至2的整数次方。 序列X(k)的离散傅里叶反变换为: 离散傅里叶反变换与正变换的区别在与变成,并多了一个1/N的运算。因为和对于推导按时间抽取的快速傅里叶变换算法并无实质性区别,因此可将FFT和快速傅里叶反变换(IFFT)算法合并在一个程序中。 利用FFT进行频谱分析 若信号本身是有限长的序列,计算序列的频谱就是直接对序列进行FFT运算求得X(k),X(k)就代表了序列在之间的频谱值。 幅度谱 相位谱 若信号是模拟信号,用FFT进行谱分析时,首先必须对信号进行采样,使之变成离散信号,然后就可按照前面的方法用FFT来对连续信号进行谱分析,按采样定理,采样频率应大于2倍信号的最高频率,为了满足采样定理,一般在采样之前要设置一个抗混叠低通滤波器。用FFT对模拟信号进行谱分析的流程图为: 三.实验仪器 PC机,MATLAB2013a 四. 实验内容和要求 对下列典型信号进行谱分析: ,这里给出针对各信号的 FFT 变换区间 N 以及对连续信号 x6(t)的采 样频率fs,供实验时参考 五.程序 %实验二,用FFT 做谱分析 clear; %清除变量 close all; %关闭全部绘图窗口 %弹出窗口菜单,b用于获取选取的菜单值 b=menu(请选择信号x1(n)--x8(n),x1(n)=R4(n),x2(n)=[1 2 3 4 4 3 2 1],... x3(n)=[4 3 2 1 1 2 3 4],x4(n)=cos(npi/4),x5(n)=sin(npi/8),... x6(n)=cos(8pit)+cos(16pit)+cos(20pit),x7=x4+x5,x8=x4+jx5,Exit); i=0; % A=[8,16,32,64]; while(b~=9) %当选择EXIT 时,返回值为9,则退出循环 %下面分别构造不同的x(n) if b==6 m=menu(请选择FFT 变换区间长度N,N=16,N=32,N=64); N=A(m+1); fs=64; n=0:(N-1); x=cos(8*pi*n/fs)+cos(16*pi*n/fs)+cos(20*pi*n/fs); else m=menu(请选择FFT 变换区间长度N,N=8,N=16,N=32); N=A(m); n=0:(N-1); if b==1 x=[1,1,1,1,0,0,0,0,zeros(1,N-8)]; elseif b==2 x=[1,2,3,4,4,3,2,1,zeros(1,N-8)]; elseif b==3 x=[4,3,2,1,1,2,3,4,zeros(1,N-8)]; elseif b==4 x=cos(n*pi/4); elseif b==5 x=sin(n*pi/8); elseif b==7 x=cos(n*pi/4)+sin(n*pi/8); elseif b==8 x=cos(n*pi/4)+j*sin(n*pi/8); end end %------------------------------------------% %先画出信号源图 i=i+1; figure(i); %创建绘图窗口 subplot(2,2,1); %指定1 号子图 xlabel(n); %标记X

文档评论(0)

1亿VIP精品文档

相关文档