实验二快速傅立叶变换fft

上传人:第*** 文档编号:34003899 上传时间:2018-02-19 格式:DOC 页数:6 大小:122KB
返回 下载 相关 举报
实验二快速傅立叶变换fft_第1页
第1页 / 共6页
实验二快速傅立叶变换fft_第2页
第2页 / 共6页
实验二快速傅立叶变换fft_第3页
第3页 / 共6页
实验二快速傅立叶变换fft_第4页
第4页 / 共6页
实验二快速傅立叶变换fft_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《实验二快速傅立叶变换fft》由会员分享,可在线阅读,更多相关《实验二快速傅立叶变换fft(6页珍藏版)》请在金锄头文库上搜索。

1、实验二 应用 FFT 对信号进行频谱分析一、实验目的1.加深对离散信号的 DTFT 和 DFT 的及其相互关系的理解。2.在理论学习的基础上,通过本次实验,加深对快速傅立叶变换的理解,熟悉 FFT 算法及其程序的编写。3.熟悉应用 FFT 对典型信号进行频谱分析的方法。4.了解应用 FFT 进行信号频谱分析过程中可能出现的问题,以便在实际中正确应用 FFT。二、实验原理与方法一个连续信号 xa(t)的频谱可以用他的傅立叶变换表示为:=如果对该信号进行理想采样,可以得到采样序列:x(n)=X a(nT)同样可以对该序列进行 Z 变换,其中 T 为采样周期:X(z)=当 Z=ej 的时候,我们就得

2、到了序列的傅立叶变换:X(ej )=其中 称为数字频率,它和模拟域频率的关系为:式中的 fs是采样频率,上式说明数字频率是模拟频率对采样频率 fs的归一化。同模拟域的情况相似,数字频率代表了序列值变化的速率,而序列的傅里叶变换为序列的频谱。序列的傅里叶变换和对应的采样信号频率具有下式的对应关系。X(ej )=即序列的频谱是采样信号频谱的周期延拓。从上式可以看出,只要分析采样序列的频谱,就可以得到相应的连续信号频谱,就可以得到相应的连续信号的频谱。注意:这里的信号必须是带限信号,采样也必须满足 Nyquist 定理。在各种信号序列中,有限长序列在数字信号处理中占有很重要的地位。无限长的序列也往往

3、可以用有限长序列来逼近。对于有限长的序列我们可以使用离散傅里叶变换(DFT) ,这一变换可以很好地反映序列的频域特性,并且容易利用快速算法在计算机上实现当序列的长度是 N 时,我们定义离散傅里叶变化为:X(k)=DFTx(n)=其中 ,它的反变换定义为:x(n)=IDFTX(k)=令 Z= ,则有: = =DFTx(n)可以得到 , 是 Z 平面单位圆上幅角为 的点,就是将单位圆进行 N 等分以后第 K 个点。所以,X(k)是 Z 变换在单位圆上的等距采样,或者说是序列福利叶变换的等距采样。时域采样在满足 Nyquist 定理时,就不会发生频率混淆;同样地,在频率域进行采样的时候,只要采样间隔

4、足够小,也不会发生时域序列的混淆。通过前面的知识,已经知道有限列长为 N的序列 )(nx的 DFT变换为nkNnWxkX10)()(12,0kL 其逆变换为10)()(NknkXnx1,0NnL 由于 MATLAB 软件本身的特点,序列或向量元素下标从 1 开始记录,而不是从 0 开始。因此,上述两式在 MATLAB 中相应的表达式为nkNnWxkX10)()(2,0NkL1)()(Nknkx1,n 而下面所讨论使用的快速傅立叶变换 )(FT并不是与 DFT不同的另外一种变换,而是为减少 DFT计算次数的一种快速有效的算法。这种快速算法,主要是利用了 nkNW下面两个特性使长序列的 分解为更小

5、点数的 所实现的。(1) 利用 nkNW的对称性使 DFT运算中有些项合并)()( knNknNnkW(2) 利用 nkN的周期性和对称性使长序列的 FT分解为更小点数的 DFT)()( nNkNnknkW快速傅立叶变换 )(FT算法正是基于这一基本思想而发展起来的。快速傅立叶变换算法形式很多,但是基本上可以分为两大类,即按时间抽取(DecimationInTime,简称DIT)法和按频率抽取(DecimationInFrequency)法。在这里,以时间抽取 )(DIT的F算法(库利图算法)为例,简单说明一下 FT算法的算法原理。为了讨论方便,设 2N,其中 为整数。如果不满足这个条件,可以

6、认为得加上若干零点来达到。由 FT的定义知nkNnWxkX10)()(12,0NkL其中 )(是列长为 )1,(L的输入序列,把它按 n的奇偶分成两个序列)()12(2rxrx12,0NrL又由于 22NjNj WeW,则 10 2110 )()()()()( n kNnkNkn XWxxkX为 奇 数为 偶 数上式表明了一个 N 点的 DFT 可以被分解为两个 N/2 点的 DFT。同时,这两个 N/2 点的DFT 按照上式又可以合成为一个 N 点的 DFT。为了要用点数为 N/2 点的 X 1(k)、X 2(k)来表达 N 点的 X(k)值还必须要用 W 系数的周期性,即 )2(2Nkrr

7、kNW这样可得202021)(211 )()(NrNrrkkrWxxkX即 X 1( )(21同理可得 X ( )()2kN另外再加上 W kN的对称性kNkNkNW2)2(就可以将 X(k)的表达式分为前后两个部分:前半部分 )()(21kXkXN 12,0NrL后半部分 )2()2()2( )2(1 kNWkkk )()(21kXkN 12,0NrL 由以上分析可见,只要求出区间 12,0N内各个整数 k 值所对应的 X 1(k)、X 2(k)的值,即可求出 1,0N区间内的全部 X(k)值,这一点恰恰是 FFT 能大量节省计算的关键所在。三、实验内容及步骤MATLAB 为计算数据的离散快

8、速傅立叶变换,提供了一系列丰富的数学函数,主要有Fft、Ifft、Fft2 、Ifft2, Fftn、 ifftn 和 Fftshift、Ifftshift 等。当所处理的数据的长度为 2 的幂次时,采用基-2 算法进行计算,计算速度会显著增加。所以,要尽可能使所要处理的数据长度为 2 的幂次或者用添零的方式来添补数据使之成为 2 的幂次。1. Fft 和 Ifft 函数调用方式(1) Y=fft(X)参数说明如果 X 是向量,则采用傅立叶变换来求解 X 的离散傅立叶变换;如果 X 是矩阵,则计算该矩阵每一列的离散傅立叶变换;如果 X 是(N 维数组,则是对第一个非单元素的维进行离散傅立叶变换

9、;)D(2) Yfft(X,N)参数说明N 是进行离散傅立叶变换的 X 的数据长度,可以通过对 X 进行补零或截取来实现。(3) (3)Yfft(X,dim) 或 Yfft(X,N,dim)参数说明在参数 dim 指定的维上进行离散傅立叶变换;当 X 为矩阵时,dim 用来指定变换的实施方向: dim=1,表明变换按列进行;dim=2 表明变换按行进行。函数 Ifft 的参数应用与函数 Fft 完全相同。应用说明【实例 1】fft 的应用X=2 1 2 8;Y=fft(X)运行结果Y13.0000 0+7.0000i -5.0000 0-7.0000【实例 2】fft(X,N,dim)的应用A

10、=2 5 7 8;1 4 0 5;3 8 5 1;9 1 2 7;Z=fft(A,1)【实例 3】fft 在信号分析中的应用使用频率分析方法从受噪声污染的信号 x(t)中鉴别出有用的信号。程序:t=0:0.001:1; %采样周期为 0.001s,即采样频率为 1000Hz;%产生受噪声污染的正县正弦波信号;x=sin(2*pi*100*t)+sin(2*pi*200*t)+rand(size(t);subplot(2,1,1)plot(x(1:50); %画出时域内的信号;Y=fft(x,512); %对 X 进行 512 点的傅立叶变换;f=1000*(0:256)/512; %设置频率轴(横轴)坐标,1000 为采样频率;subplot(2,1,2)plot(f,Y(1:257); %画出频域内的信号运行结果图 5-3 时域信号和频域信号的比较由上面的图 5-3 可以看出,从受噪声污染信号的时域形式中,很难看出正弦波的成分。但是通过对 x(t)作傅立叶变换,把时域信号变换到频域进行分析,可以明显看出信号中100Hz 和 200Hz 的两个频率分量。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号