快速傅里叶变换

快速傅里叶变换
快速傅里叶变换

第四章 快速傅里叶变换

有限长序列可以通过离散傅里叶变换(DFT)将其频域也离散化成有限长序列.但其计算量太大,很难实时地处理问题,因此引出了快速傅里叶变换(FFT). 1965年,Cooley 和Tukey 提出了计算离散傅里叶变换(DFT )的快速算法,将DFT 的运算量减少了几个数量级。从此,对快速傅里叶变换(FFT )算法的研究便不断深入,数字信号处理这门新兴学科也随FFT 的出现和发展而迅速发展。根据对序列分解与选取方法的不同而产生了FFT 的多种算法,基本算法是基2DIT 和基2DIF 。FFT 在离散傅里叶反变换、线性卷积和线性相关等方面也有重要应用。

快速傅里叶变换(FFT )是计算离散傅里叶变换(DFT )的快速算法。 DFT 的定义式为

)(k X =)()(1

0k R W n x N N n kn

N ∑-=

在所有复指数值kn

N W 的值全部已算好的情况下,要计算一个)(k X 需要N

次复数乘法和N -1次复数加法。算出全部N 点)(k X 共需2

N 次复数乘法和)1(-N N 次复数加法。即计算量是与2

N 成正比的。

FFT 的基本思想:将大点数的DFT 分解为若干个小点数DFT 的组合,从而减少运算量。

N W 因子具有以下两个特性,可使DFT 运算量尽量分解为小点数的DFT 运算:

(1) 周期性:k

N n N kn N n N k N W W W )()(++== (2) 对称性:k N

N k N W W -=+)2/( 利用这两个性质,可以使DFT 运算中有些项合并,以减少乘法次数。例子:求当N =4时,X(2)的值

)

()]3()1([)]2()0([)()]3()1([)]2()0([)3()2()1()0()()2(0

424046

44424043

24对称性-=周期性W x x x x W x x W x x W x W x W x W x W n x X n n +++++=+++==∑=

通过合并,使乘法次数由4次减少到1次,运算量减少。

FFT 的算法形式有很多种,但基本上可以分为两大类:按时间抽取(DIT )和按频率抽取(DIF )。

4.1 按时间抽取(DIT )的FTT

为了将大点数的DFT 分解为小点数的DFT 运算,要求序列的长度N 为复合数,最常用的是M

N 2=的情况(M 为正整数)。该情况下的变换称为基2FFT 。下面讨论基2情况的算法。 先将序列x(n)按奇偶项分解为两组

???=+=)

()12()()2(21r x r x r x r x 12,,1,0-=N

r

将DFT 运算也相应分为两组

==)]([)(n x DFT k X ∑-=1

0)(N n kn

N W n x

∑∑-=-==

1

n 01

)()(N n kn N

N n n kn N

W

n x W

n x 为奇数为偶数+

∑∑-=+-=++

1

2/0)12(1

2/02)12()2(N r k r N

N r rk N

W

r x W

r x =

∑∑-=-=+12/0

22

12/0

21)()(N r rk

N

k N N r rk N

W r x

W

W r x = ∑∑-=-=+12/0

2/2

1

2/02

/1)()(N r rk N k N

N r rk

N W r x

W

W

r x = (因为rk

N rk N W W 2/2=)

)()(21k X W k X k

N +=

其中)(1k X 、)(2k X 分别是)()(21n x n x 、的N/2点的DFT

)(1k X 12

0,)2()(1

2/02/1

2/02

/1-≤

≤=

∑∑-=-=N k W r x W

r x N r rk N N r rk N = )(2k X 12

0,)12()(1

2/0

2/12/0

2

/2-≤

≤+=

∑∑-=-=N k W r x W

r x N r rk N N r rk N = 至此,一个N 点DFT 被分解为两个N/2点的DFT 。 上面是否将全部N 点的)(k X 求解出来了?

分析:)(1k X 和)(2k X 只有N/2个点(12

,

,1,0-=N

k ),则由)(k X )()(21k X W k X k

N +=只能求出)(k X 的前N/2个点的DFT ,要求出

全部N 点的)(k X ,需要找出)(1k X 、)(2k X 和)2/(N k X +的关系,其中12

,

,1,0-=N k 。由式子)(k X )()(21k X W k X k

N +=可得 )2/(N k X +)2/()2/(22

/1N k X W N k X N k N +++=+化简得 )2/(N k X +=)()(21k X W k X k N -=,12

,

,1,0-=N

k 这样N 点DFT 可全部由下式确定出来:

?????-=++=)

()()2/()

()()(2121k X W k X N k X k X W k X k X k

N k

N 12,,1,0-=N k (*) 上式可用一个专用的碟形符号来表示,这个符号对应一次复乘和两次复加运

算。

a

b

k

N

W

b

W a k

N +b

W a k

N --1

图 蝶形运算符号

通过这样的分解以后,每一个N /2点的DFT 只需要4

)2(2

2N N =次复数乘

法,两个N/2点的DFT 需要2

)2(22

2N N =次复乘,再加上将两个N /2点

DFT 合并成为N 点DFT 时有N /2次与W 因子相乘,一共需要

2

222

2N N N ≈+次复乘。可见,通过这样的分解,运算量节省了近一半。 因为M

N 2=,N/2仍然是偶数,因此可以对两个N/2点的DFT 再分别作进一步的分解,将两个N/2点的DFT 分解成两个N/4点的DFT 。

例如对)(1r x ,可以在按其偶数部分及奇数部分进行分解:

???=+=)

()12()()2(4131l x l x l x l x 14,,1,0-=N

l

则的运算可相应分为两组:

)(1k X ∑∑-=+-=++

1

4/0)12(2

/114/0

22

/1)12()2(N l k l N N l lk N W

l x W

l x =

∑∑-=-=+14/0

4/4

2

/1

4/04

/3)()(N l lk

N k N N l lk

N W l x

W

W

l x =

)()(42/3k X W k X k

N += 14

,

,1,0-=N

k 将系数统一为以N为周期,即k

N k N W W 22/=,可得

?????-=++=)

()()4/()

()()(42314231k X W k X N k X k X W k X k X k

N k

N 14,,1,0-=N k 同样,对)(2k X 也可进行类似的分解。一直分解下去,最后是2点的DFT ,2点DFT 的运算也可用碟形符号来表示。这样,对于一个823

==N 的DFT 运算,其按时间抽取的分解过程及完整流图如下图所示。

这种方法,由于每一步分解都是按输入序列在时域上的次序是属于偶数还是奇数来抽取的,故称为“时间抽取法”。

分析上面的流图,M

N 2=,一共要进行M 次分解,构成了从x(n)到X(k)的M 级运算过程。每一级运算都是由N/2个蝶形运算构成,因此每一级运算都需要N/2次复乘和N 次复加,则按时间抽取的M 级运算后总共需要

复数乘法次数:N N

M N m F 2log 2

2=?=

复数加法次数:N N M N a F 2log =?=

根据上面的流图,分析FFT算法的两个特点,它们对FFT的软硬件

构成产生很大的影响。 (1) 原位运算 也称为同址运算,当数据输入到存储器中以后,每一级运算的结果仍然存储在原来的存储器中,直到最后输出,中间无需其它的存储器。根据运算流图分析原位运算是如何进行的。原位运算的结构可以节省存储单元,降低设备成本。

(2) 变址

分析运算流图中的输入输出序列的顺序,输出按顺序,输入是“码位倒置”的顺序。见图。

码位倒置的变址处理

在实际运算中,直接将输入数据x(n)按码位倒置的顺序排好输入很不方便,一般总是先按自然顺序输入存储单元,然后通过变址运算将自然顺序

的存储换成码位倒置顺序的存储,这样就可以进行FFT 的原位运算。变质的功能如图所示。用软件实现是通用采用雷德(Rader )算法,算出I 的倒序J以后立即将输入数据X(I)和X(J)对换。尽管变址运算所占运算量的比例很小,但对某些高要求的应用(尤其在实时信号处理中),也可设法用适当的电路结构直接实现变址。例如单片数字信号处理器TMS320C25就有专用于FFT 的二进制码变址模式。

4.2 按频率抽取(DIF )的FTT

除时间抽取法外,另外一种普遍使用的FFT 结构是频率抽取法。频率抽取法将输入序列不是按奇、偶分组,而是将N点DFT 写成前后两部分:

==)]([)(n x DFT k X ∑-=1

0)(N n kn

N W n x

∑∑-=-==

1

2

/1

)2/(0

)()(N N n kn

N N n kn

N

W n x W n x +

∑∑-=+-=++

1

2/0

)2/(1

2/0)2/()(N n k N n N

N n nk N

W

N n x W

n x =

nk

N

N n k N N W N n x W n x ∑-=++12/0

)2/()]2/()([= 因为k k

N N N N W W )1(,1)2/(2/-=-=,k 为偶数时1)1(=-k

,k 为奇数时

1)1(-=-k ,由此可将X(k)分解为偶数组和奇数组:

nk

N

N n k

W N n x n x k X ∑-=+-+1

2/0

)]2/()

1()([)(=

nr

N N n nr

N

N n W

N n x n x W N n x n x r X 2

/1

2/0

21

2/0)]2/()([)]2/()([)2(∑∑-=-=++=

++=

nr N n

N N n n

r N

N n W W

N n x n x W N n x n x r X 2

/1

2/0

)12(1

2/0

)]2/()([)]2/()([)12(∑∑-=+-=+-=

+-+=

令???+-=++=n

N

W N n x n x n x N n x n x n x )]2/()([)()

2/()()(21 12/,,1,0-=N n 这两个序列都是N/2点的序列,对应的是两个N/2点的DFT 运算:

nr

N N n W n x r X 2/1

2/01)]()2(∑-==

rn N N n W n x r X 2/1

2/0

2)()12(∑-=+=

这样,同样是将一个N 点的DFT 分解为两个N/2点的DFT 了。频率抽选法

对应的碟形运算关系图如下:

a

b

n N

W b

a +n

N

W b a )(--1

对于N=8时频率抽取法的FFT 流图如下:

这种分组的办法由于每次都是按输出X(k)在频域的顺序上是属于偶数还是奇数来分组的,称为频率抽取法。与前面按时间抽取的方法相比,相同点 问题:如何利用快速算法计算IDFT ? 分析IDFT 的公式:

1,,1,0,)(1)]([)(10

-===∑-=-N n W k X N k X IDFT n x N k nk

N 比较DFT 的公式:

1,,1,0,)()]([)(1

-==

=∑-=N k W

n x n x DFT k X N n nk

N

得知可用两种方法来实现IDFT 的快速算法:(1)只要把DFT 运算中的每

一个系数nk N W 该为nk

N W -,并且最后再乘以常数

N

1

,就可以用时间抽取法或频率抽取的FFT 算法来直接计算IDFT 。这种方法需要对FFT 的程序和参数稍加改动才能实现。(2)因为

1,,1,0)]},([{1])([1)(**

10*-===∑-=N n k X DFT N

W k X N n x N k nk N ,也就

是说,可先将X(k)取共轭变换,即将X(k)的虚部乘以-1,就可直接调用

FFT 的程序,最后再对运算结果取一次共轭变换并乘以常数1/N 即可得到x(n)的值。这种方法中,FFT 运算和IFFT 运算都可以共用一个子程序块,在使用通用计算机或用硬件实现时比较方便。

4.1.3 混合基FFT 算法

以上讨论的是基2的FFT 算法,即M

N 2=的情况,这种情况实际上使用得最多,这种FFT 运算,程序简单,效率很高,用起来很方便。另外,在实际应用时,有限长序列的长度N 到底是多少在很大程度时是由人为因素确定的,因此,大多数场合人们可以将N 选定为M

N 2=,从而可以直接调用以2为基数的FFT 运算程序。

如果长度N 不能认为确定,而N 的数值又不是以2为基数的整数次方,一般可有以下两种处理方法:

(1) 将x(n)用补零的方法延长,使N 增长到最邻近的一个

M N 2=数值。例如,N=30,可以在序列x(n)中补进

x(30)=x(31)=0两个零值点,使N=32。如果计算FFT

的目的是为了了解整个频谱,而不是特定频率点,则此法可行。因为有限长序列补零以后并不影响其频谱

)(jw e X ,只是频谱的采样点数增加而已。

(2)

如果要求特定频率点的频谱,则N 不能改变。如果N 为复合数,则可以用以任意数为基数的FFT 算法来计算。快速傅里叶变换的基本思想就是要将DFT 的运算尽量分小。例如,N=6时,可以按照N=3×2分解,将6点DFT 分解为3组2点DFT 。

举例:N=9时的快速算法。

4.2 快速傅里叶变换的应用

凡是可以利用傅里叶变换来进行分析、综合、变换的地方,都可以利用FFT 算法及运用数字计算技术加以实现。FFT 在数字通信、语音信号处理、图像处理、匹配滤波以及功率谱估计、仿真、系统分析等各个领域都得到了广泛的应用。但不管FFT 在哪里应用,一般都以卷积积分或相关积分的具体处理为依据,或者以用FFT 作为连续傅里叶变换的近似为基础。

4.2.1 利用FFT 求线性卷积—快速卷积

在实际中常常遇到要求两个序列的线性卷积。如一个信号序列x(n)通过FIR 滤波器时,其输出y(n)应是x(n)与h(n)的卷积: ∑∞

-∞

=-=

*=m m n h m x n h n x n y )()()()()(

有限长序列x(n)与h(n)的卷积的结果y(n)也是一个有限长序列。假设x(n)与h(n)的长度分别为N1和N2,则y(n)的长度为N=N1+N2-1。若通过补零使x(n)与h(n)都加长到N 点,就可以用圆周卷积来计算线性卷积。这样得到用FFT 运算来求y(n)值(快速卷积)的步骤如下:

(1) 对序列x(n)与h(n)补零至长为N ,使N ≥N1+N2-1,并且

)(2为整数M N M =,即

?

?

?-+=-==1,,11,1,01

1,,1,0),()(N N N n N n n x n x

??

?-+=-==1

,,12,2,01

2,,1,0),()(N N N n N n n h n h (2) 用FFT 计算x(n)与h(n)的离散傅里叶变换

)()()(k X FFT n x ?? (N 点) )()()(k H FFT n h ?? (N 点)

(3) 计算Y(k)=X(k)H(k)

(4) 用IFFT 计算Y(k)的离散傅里叶反变换得:y(n)=IFFT[Y(k)] (N 点)

4.2.2 利用FFT 求相关—快速相关

互相关及自相关的运算已广泛的应用于信号分析与统计分析,应用于连续时间系统也用于离散事件系统。

用FFT 计算相关函数称为快速相关,它与快速卷积完全类似,不同的是一个应用离散相关定理,另一个应用离散卷积定理。同样都要注意到离散傅里叶变换固有的周期性,也同样用补零的方法来绕过这个障碍。

设两个离散时间信号x(n)与y(n)为已知,离散互相关函数记作)(n R xy ,定义为

∑∞

-∞

=+=

m xy m n y m x n R )()()(

如果x(n)与y(n)的序列长度分别为N1和N2,则用FFT 求相关的计算步骤如下:

(1)对序列x(n)与y(n)补零至长为N ,使N ≥N1+N2-1,并且

)(2为整数M N M =,即

?

??-+=-==1,,11,1,01

1,,1,0),()(N N N n N n n x n x

??

?-+=-==1

,,12,2,01

2,,1,0),()(N N N n N n n y n y (2)用FFT 计算x(n)与y(n)的离散傅里叶变换

)()()(k X FFT n x ?? (N 点) )()()(k Y FFT n y ?? (N 点)

(3)将X(k)的虚部Im[X(k)]改变符号,求得其共轭X*(k) (4)计算)(k R xy =X*(k)Y(k) (5) 用IFFT 求得相关序列)(n R xy

)(n R xy =IFFT[)(k R xy ] (N 点)

如果x(n)=y(n),则求得的是自相关序列)(n R xx

4.2.3 Chirp -Z 变换

采用FFT 算法可以很快的计算出全部DFT 值,也即Z 变换在单位圆上的全部等间隔采样值。但是,很多场合下,并非整个单位圆上的频谱都是很有意义的,例如对于窄带信号过程,往往只需要对信号所在的一段频带进行分析,这是,希望采样能密集在这段频带内,而对频带以外的部分,则可以完全不管。另外,有时也希望采样能不局限于单位圆上,例如,语音信号处理中,往往需要知道其Z 变换的极点所在频率,如果极点位置离单位圆较远,,则其单位圆上的频谱就很平滑,如图所示,这是很难从中识别出极点所在的频率。要是采样不是沿单位圆而是沿一条接近这些极点的弧线进行,则所得的结果将会在极点所在频率上出现明显的尖峰,从而可以较准确的测定极点频率。

螺线采样就是一种适用于这种需要的变换,并且可以采用FFT 来快速计算,这种变换也称为Chirp-Z 变换,它是沿Z 平面上的一段螺线作等分角的采样,这些采样点可表达为

1,,1,0,-==-M k AW z k k

其中M 为采样点的总数,A 为起始点位置,这个位置可以进一步用它的半径A 0及相角0θ来表示 0

0θj e A A =

参数W 可表示为

00Φ=j e

W W

其中0W 为螺线的伸展率,0W >1时螺线内缩(反时针方向);0W <1时螺线外伸。0Φ为螺线上采样点之间的等分角。螺线采样点在Z 平面上的分布可表示为下图。

下面分析这些点上采样值计算的特点。假定x(n)是长度为N 的有限长信号序列,则其Z 变换在采样点上的值为

实验八 利用快速傅里叶变换(FFT)实现快速卷积(精选、)

实验八 利用FFT 实现快速卷积 一、 实验目的 (1) 通过这一实验,加深理解FFT 在实现数字滤波(或快速卷积)中的重要作用,更好的利用FFT 进行数字信号处理。 (2) 进一步掌握循环卷积和线性卷积两者之间的关系。 二、 实验原理与方法 数字滤波器根据系统的单位脉冲响应h(n)是有限长还是无限长可分为有限长单位脉冲响应(Finite Impulse Response )系统(简记为FIR 系统)和无限长单位脉冲响应(Infinite Impulse Response )系统(简记为IIR 系统)。 对于FIR 滤波器来说,除了可以通过数字网络来实现外,也可以通过FFT 的变换来实现。 一个信号序列x(n)通过FIR 滤波器时,其输出应该是x(n)与h(n)的卷积: ∑+∞ -∞ =-= =m m n h m x n h n x n y )()()(*)()( 或 ∑+∞ -∞ =-= =m m n x m h n x n h n y ) ()()(*)()( 当h(n)是一个有限长序列,即h(n)是FIR 滤波器,且10-≤≤N n 时 ∑-=-=1 0) ()()(N m m n x m h n y 在数字网络(见图6.1)类的FIR 滤波器中,普遍使用的横截型结构(见下图6.2 图6.1 滤波器的数字网络实现方法 图6.2 FIR 滤波器横截型结构 y(n) y(n) -1-1-1-1

应用FFT 实现数字滤波器实际上就是用FFT 来快速计算有限长度列间的线性卷积。 粗略地说,这种方法就是先将输入信号x(n)通过FFT 变换为它的频谱采样 值X(k),然后再和FIR 滤波器的频响采样值H(k)相乘,H(k)可事先存放在存储器中,最后再将乘积H(k)X(k)通过快速傅里叶变换(简称IFFT )还原为时域序列,即得到输出y(n)如图6.3所示。 图6.3 数字滤波器的快速傅里叶变换实现方法 现以FFT 求有限长序列间的卷积及求有限长度列与较长序列间的卷积为例来讨论FFT 的快速卷积方法。 (1) 序列)(n x 和)(n h 的列长差不多。设)(n x 的列长为1N ,)(n h 的列长为2N ,要求 )()(n x n y =N ∑-=-==1 ) ()()(*)()(N r r n h r x n h n x n h 用FFT 完成这一卷积的具体步骤如下: i. 为使两有限长序列的线性卷积可用其循环卷积代替而不发生混叠,必须选择循环卷积长度121-+≥N N N ,若采用基2-FFT 完成卷积运 算,要求m N 2=(m 为整数)。 ii. 用补零方法使)(n x ,)(n h 变成列长为N 的序列。 ?? ?-≤≤-≤≤=10 10)()(11N n N N n n x n x ?? ?-≤≤-≤≤=10 1 0)()(22N n N N n n h n h iii. 用FFT 计算)(),(n h n x 的N 点离散傅里叶变换 )()(k X n x FFT ??→? )()(k H n h FFT ??→? iv. 做)(k X 和)(k H 乘积,)()()(k H k X k Y ?= v. 用FFT 计算)(k Y 的离散傅里叶反变换得 y(n)

一、傅立叶变换的由来

写在最前面:本文是我阅读了多篇相关文章后对它们进行分析重组整合而得,绝大部分内容非我所原创。在此向多位原创作者致敬!!! 为什么要进行傅立叶变换?傅立叶变换究竟有何意义?如何用Matlab实现快速傅立叶变换?来源:张宗帅.docx的日志 一、傅立叶变换的由来 关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶变换的描述,但是大都是些故弄玄虚的文章,太过抽象,尽是一些让人看了就望而生畏的公式的罗列,让人很难能够从感性上得到理解,最近,我偶尔从网上看到一个关于数字信号处理的电子书籍,是一个叫Steven W. Smith, Ph.D.外国人写的,写得非常浅显,里面有七章由浅入深地专门讲述关于离散信号的傅立叶变换,虽然是英文文档,我还是硬着头皮看完了有关傅立叶变换的有关内容,看了有茅塞顿开的感觉,在此把我从中得到的理解拿出来跟大家分享,希望很多被傅立叶变换迷惑的朋友能够得到一点启发,这电子书籍是免费的,有兴趣的朋友也可以从网上下载下来看一下,URL地址是: https://www.360docs.net/doc/a19235457.html,/pdfbook.htm 要理解傅立叶变换,确实需要一定的耐心,别一下子想着傅立叶变换是怎么变换的,当然,也需要一定的高等数学基础,最基本的是级数变换,其中傅立叶级数变换是傅立叶变换的基础公式。 二、傅立叶变换的提出 让我们先看看为什么会有傅立叶变换?傅立叶是一位法国数学家和物理学家的名字,英语原名是Jean Baptiste Joseph Fourier(1768-1830), Fourier对热传递很感兴趣,于1807年在法国科学学会上发表了一篇论文,运用正弦曲线来描述温度分布,论文里有个在当时具有争议性的决断:任何连续周期信号可以由一组适当的正弦曲线组合而成。当时审查这个论文的人,其中有两位是历史上著名的数学家拉格朗日(Joseph Louis Lagrange, 1736-1813)和拉普拉斯(Pierre Simon de Laplace, 1749-1827),当拉普拉斯和其它审查者投票通过并要发表这个论文时,拉格朗日坚决反对,在近50年的时间里,拉格朗日坚持认为傅立叶的方法无法表示带有棱角的信号,如在方波中出现非连续变化斜率。法国科学学会屈服于拉格朗日的威望,拒绝了傅立叶的工作,幸运的是,傅立叶还有其它事情可忙,他参加了政治运动,随拿破仑远征埃及,法国大革命后因会被推上断头台而一直在逃避。直到拉格朗日死后15年这个论文才被发表出来。 谁是对的呢?拉格朗日是对的:正弦曲线无法组合成一个带有棱角的信号。但是,我们可以用正弦曲线来非常逼近地表示它,逼近到两种表示方法不存在能量差别,基于此,傅立叶是对的。 为什么我们要用正弦曲线来代替原来的曲线呢?如我们也还可以用方波或三角波来代替呀,分解信号的方法是无穷的,但分解信号的目的是为了更加简单地处理原来的信号。用正余弦来表示原信号会更加简单,因为正余弦拥有原信号所不具有的性质:正弦曲线保真度。一个正弦曲线信号输入后,输出的仍是正弦曲线,只有幅度和相位可能发生变化,但是频率和波的形状仍是一样的。且只有正弦曲线才拥有这样的性质,正因如此我们才不用方波或三角波来表示。

实验一快速傅里叶变换

实验一 快速傅里叶变换之报告 一 、实验目的 1、在理论学习的基础上,通过本实验加深对快速傅立叶变换的理解; 2、熟悉并掌握按时间抽取FFT 算法的程序; 3、了解应用FFT 进行信号频谱分析过程中可能出现的问题,例如混淆、泄漏、 栅栏效应等,以便在实际中正确应用FFT 。 二 实验内容 a ) 信号频率F =50Hz ,采样点数N=32,采样间隔T= matlab 程序代码为: F=50; T=; N=32; n=0:N-1; t=n*T; A=sin(2*pi*F*t); figure; Y = fft(A,N); h = (abs(Y)); h=h/max(h(1:N)); for n=1:N; string1=strcat('X(',num2str(n-1), ')=',num2str(h(n))); disp(string1); f=(n/T)/N; end stem([0:N-1]/N/T,h); xlabel('?μ?ê/HZ'); ylabel('??·ùX£¨ejw£?'); title('·ù?μì?D?'); 上述代码命令中,将FFT 变换后的数字变量K ,在画图时转换成频域中的频率f 。这主 要是根据数字频率与模拟域频率之间的关系: T Ω=ω 其中ω、Ω分别为数字和模拟域中的频率,且N k πω2= f π2=Ω 于是有: NT k f = 运算结果: X(1)=1 X(2)= X(3)= X(4)=

X(5)= X(6)= X(7)= X(8)= X(9)= X(10)= X(11)= X(12)= X(13)= X(14)= X(15)= X(16)= X(17)= X(18)= X(19)= X(20)= X(21)= X(22)= X(23)= X(24)= X(25)= X(26)= X(27)= X(28)= X(29)= X(30)= X(31)=1 b)信号频率F=50Hz,采样点数N=32,采样间隔T= 同理可将a)中F、N、T,参数改成要求值(以下均是如此),即可得,X(0)= X(1)= X(2)= X(3)= X(4)= X(5)= X(6)= X(7)= X(8)=1 X(9)= X(10)= X(11)= X(12)= X(13)= X(14)= X(15)= X(16)= X(17)= X(18)= X(19)= X(20)= X(21)= X(22)= X(23)= X(24)=1 X(25)= X(26)= X(27)= X(28)= X(29)= X(30)= X(31)=

傅里叶变换性质证明

傅里叶变换性质证明 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

傅里叶变换的性质 2.6.1线性 若信号和的傅里叶变换分别为和, 则对于任意的常数a和b,有 将其推广,若,则 其中为常数,n为正整数。

由傅里叶变换的定义式很容易证明线性性质. 显然傅里叶变换也是一种线性运算,在第一章我们已经知道了,线性有两个含义:均匀性和叠加性。均匀性表明,若信号乘以常数a,则信号的傅里叶变换也乘以相同的常数a,即 叠加性表明,几个信号之和的傅里叶变换等于各个信号的傅里叶变换之和 ? 2.6.2 反褶与共轭性 设f(t)的傅里叶变换为,下面我们来讨论信号反褶、共轭以及既反褶又共轭后,新信号的傅里叶变换。

(1)反褶 f(-t)是f(t)的反褶,其傅里叶变换为 (2)共轭 (3)既反褶又共轭 本性质还可利用前两条性质来证明: 设g(t)=f(-t),h(t)=g*(t),则 在上面三条性质的证明中,并没有特别指明f(t)是实函数还是复函数,因此,无论f(t)为实信号还是复信号,其傅里叶变换都满足下面三条性质2.6.3 奇偶虚实性 已知f(t)的傅里叶变换为。在一般情况下,是复函数,因此可以把它表示成模与相位或者实部与虚部两部分,即 ? 根据定义,上式还可以写成 下面根据f(t)的虚实性来讨论F()的虚实性。 (1) f(t)为实函数对比式(2-33)与(2-34),由FT的唯一性可得 ()f(t)是实的偶函数,即f(t)=f(-t)

X()的积分项是奇函数,而奇函数在对称区间内的积分为零,故 这时X()=0,于是 可见,若f(t)是实偶函数,则F()也是实偶函数,即 左边反褶,右边共轭 ()f(t)是实的奇函数,即-f(t)=f(-t) R()的积分项是奇函数,而奇函数在对称区间内的积分为零,故 这时R()=0,于是 可见,若f(t)是实奇函数,则F()是虚奇函数,即 左边反褶,右边共轭 有了上面这两条性质,下面我们来看看一般实信号(即可能既不是偶信号,又不是奇信号,反正不清楚,或者说是没有必要关心信号的奇偶特性)的FT频谱特点。 2.6.4对称性

快速傅里叶变换实验报告..

快速傅里叶变换实验报告 班级: 姓名: 学号:

快速傅里叶变换 一.实验目的 1.在理论学习的基础上,通过本实验加深对快速傅立叶变换的理解; 2.熟悉并掌握按时间抽取FFT 算法的程序; 3.了解应用FFT 进行信号频谱分析过程中可能出现的问题,例如混淆、泄漏、栅栏效应等,以便在实际中正确应用FFT 。 二.实验内容 1.仔细分析教材第六章‘时间抽取法FFT ’的算法结构,编制出相应的用FFT 进行信号分析的C 语言(或MATLAB 语言)程序; 2.用FFT 程序分析正弦信号 ()sin(2)[()(*)],(0)1y t f t u t u t N T t u π=---∞<<+∞=设 分别在以下情况进行分析并讨论所得的结果: a ) 信号频率f =50Hz ,采样点数N=32,采样间隔T=0.000625s b ) 信号频率f =50Hz ,采样点数N=32,采样间隔T=0.005s c ) 信号频率f =50Hz ,采样点数N=32,采样间隔T=0.0046875s d ) 信号频率f =50Hz ,采样点数N=32,采样间隔T=0.004s e ) 信号频率 f =50Hz ,采样点数N=64,采样间隔T=0.000625s f ) 信号频率f =250Hz ,采样点数N=32,采样间隔T=0.005s g ) 将c ) 信号后补32个0,做64点FFT 三.实验要求 1.记录下实验内容中各种情况下的X (k)值,做出频谱图并深入讨论结果,说明参数的变化对信号频谱产生哪些影响。频谱只做模特性,模的最大值=1,全部归一化;

2.打印出用C 语言(或MATLAB 语言)编写的FFT 源程序,并且在每一小段处加上详细的注释说明; 3.用C 语言(或MATLAB 语言)编写FFT 程序时,要求采用人机界面形式: N , T , f 变量均由键盘输入,补零或不补零要求设置一开关来选择。 四.实验分析 对于本实验进行快速傅里叶变换,依次需要对信号进行采样,补零(要求补零时),码位倒置,蝶形运算,归一化处理并作图。 此外,本实验要求采用人机界面形式,N,T,F 变量由键盘输入,补零或不补零设置一开关来选择。 1.采样 本实验进行FFT 运算,给出的是正弦信号,需要先对信号进行采样,得到有限 长序列()n x , N n ...... 2,1,0= Matlab 实现: t=0:T:T*(N-1); x=sin(2*pi*f*t); 2.补零 根据实验要求确定补零与否,可以用if 语句做判断,若为1,再输入补零个数, 并将补的零放到采样得到的序列的后面组成新的序列,此时新的序列的元素个数等于原采样点个数加上补零个数,并将新的序列个数赋值给N 。 Matlab 实现: a=input('是否增加零点? 是请输入1 否请输入0\n'); if (a) ZeroNum=input('请输入增加零点的个数:\n'); else ZeroNum=0; end if (a) x=[x zeros(1, ZeroNum)];%%指令zeros(a,b)生成a 行b 列全0矩阵,在单行矩阵x 后补充0 end N=N+ZeroNum; 3.码位倒置 本实验做FFT 变换的级数为M ,N M 2log =

深入浅出的讲解傅里叶变换

深入浅出的讲解傅里叶变换 我保证这篇文章和你以前看过的所有文章都不同,这是12年还在果壳的时候写的,但是当时没有来得及写完就出国了……于是拖了两年,嗯,我是拖延症患者…… 这篇文章的核心思想就是: 要让读者在不看任何数学公式的情况下理解傅里叶分析。 傅里叶分析不仅仅是一个数学工具,更是一种可以彻底颠覆一个人以前世界观的思维模式。但不幸的是,傅里叶分析的公式看起来太复杂了,所以很多大一新生上来就懵圈并从此对它深恶痛绝。老实说,这么有意思的东西居然成了大学里的杀手课程,不得不归咎于编教材的人实在是太严肃了。(您把教材写得好玩一点会死吗?会死吗?)所以我一直想写一个有意思的文章来解释傅里叶分析,有可能的话高中生都能看懂的那种。所以,不管读到这里的您从事何种工作,我保证您都能看懂,并且一定将体会到通过傅里叶分析看到世界另一个样子时的快感。至于对于已经有一定基础的朋友,也希望不要看到会的地方就急忙往后翻,仔细读一定会有新的发现。 ————以上是定场诗———— 下面进入正题: 抱歉,还是要啰嗦一句:其实学习本来就不是易事,我写这篇文章的初衷也是希望大家学习起来更加轻松,充满乐趣。但是千万!千万不要把这篇文章收藏起来,或是存下地址,心里想着:以后有时间再看。这样的例子太多了,也许几年后你都没有再打开这个页面。无论如何,耐下心,读下去。这篇文章要比读课本要轻松、开心得多…… 一、嘛叫频域 从我们出生,我们看到的世界都以时间贯穿,股票的走势、人的身高、汽车的轨迹都会随着时间发生改变。这种以时间作为参照来观察动态世界的方法我们称其为时域分析。而我们也想当然的认为,世间万物都在随着时间不停的改变,并且永远不会静止下来。但如果我告诉你,用另一种方法来观察世界的话,你会发现世界是永恒不变的,你会不会觉得我疯了?我没有疯,这个静止的世界就叫做频域。 先举一个公式上并非很恰当,但意义上再贴切不过的例子: 在你的理解中,一段音乐是什么呢?

傅里叶变换与傅里叶级数

重温傅里叶—笔记篇 本文记录的大多是基础的公式,还有一些我认为比较重要的有参考价值的说明。(如果对这些公式已经很熟悉,可以直接看第三部分:总结性说明) 重温傅里叶—笔记篇 一、傅里叶级数 $关于三角函数系的正交性: 三角函数系包括: 1,cos x,sinx,cos2x,sin 2x,……cos nx,sinnx,…… “正交性”是说,三角函数系中的任何一项与另一项的乘积,在(-π, π) 区间内的积分为0。(任何两相的积总可以展成两个频率为整数倍基频的正余弦函数之和或差,而这两个展开后的正余弦在(-π, π)上积分都为0)。 不同频率(但都是整数倍基频)的两个正弦函数之积,在(-π, π)上积分恒为0。 同频率的两个正弦函数之积,只有在这两个正弦的相位正交时,其在(-π, π)上积分才是0。 三角函数系中除“1”以外的任何一项的平方,在(-π, π)上的积分恒为π,“1”在这个区间上的积分为2π。

$ 上公式! ①当周期为2π时: 式(1): 上式成立的条件是f(x)满足狄立克雷充分条件: 1.在任意有限区间内连续,或只有有限多个第一类间断点; 2.任意的有限区间,都可被分成有限多个单调区间(另一种说法是:任意有限区间内只有有限多个极值点,其实是一样的)

式(1)第一行中的a0/2 就是f(x)的周期平均值,而且第一行的式子只对f(x)是连续函数的情况成立;如果f(x)不连续,则应表示成“(1/2) ×[f(x-0)+f(x+0)]”,即f(x)左右极限的算术平均。下面的类似情况都是这样,之后就不再专门说明,这些大家应该都懂。 第三、四行中,n的取值都是:1,2,3,4,……n,……(都为正,且不包含0)。 ②当周期为2L时(这也是最一般的情形): 式(2): 第一行中的a0/2 就是f(x)的周期平均值; 第三、四行中,n的取值都是:1,2,3,4,……n,……(都为正,且不包含0)。

详解FFT(快速傅里叶变换FFT.

kn N W N N 第四章 快速傅里叶变换 有限长序列可以通过离散傅里叶变换(DFT)将其频域也离散化成有限长 序列.但其计算量太大,很难实时地处理问题,因此引出了快速傅里叶变换 (FFT). 1965 年,Cooley 和 Tukey 提出了计算离散傅里叶变换(DFT )的快 速算法,将 DFT 的运算量减少了几个数量级。从此,对快速傅里叶变换(FFT ) 算法的研究便不断深入,数字信号处理这门新兴学科也随 FFT 的出现和发 展而迅速发展。根据对序列分解与选取方法的不同而产生了 FFT 的多种算 法,基本算法是基2DIT 和基2DIF 。FFT 在离散傅里叶反变换、线性卷积 和线性相关等方面也有重要应用。 快速傅里叶变换(FFT )是计算离散傅里叶变换(DFT )的快速算法。 DFT 的定义式为 N ?1 X (k ) = ∑ x (n )W N R N (k ) n =0 在所有复指数值 W kn 的值全部已算好的情况下,要计算一个 X (k ) 需要 N 次复数乘法和 N -1 次复数加法。算出全部 N 点 X (k ) 共需 N 2 次复数乘法 和 N ( N ? 1) 次复数加法。即计算量是与 N 2 成正比的。 FFT 的基本思想:将大点数的 DFT 分解为若干个小点数 DFT 的组合, 从而减少运算量。 W N 因子具有以下两个特性,可使 DFT 运算量尽量分解为小点数的 DFT 运算: (1) 周期性: ( k + N ) n N = W kn = W ( n + N ) k (2) 对称性:W ( k + N / 2 ) = ?W k N N 利用这两个性质,可以使 DFT 运算中有些项合并,以减少乘法次数。例子: 求当 N =4 时,X(2)的值

快速傅里叶变换实验报告

快速傅里叶变换实验报告

————————————————————————————————作者:————————————————————————————————日期: ?

快速傅里叶变换实验报告 机械34班 刘攀 2013010558 一、 基本信号(函数)的FF T变换 1. 000()sin()sin 2cos36x t t t t π ωωω=+++ 1) 采样频率08s f f =,截断长度N =16; 取02ωπ=rad/s,则0f =1Hz ,s f =8Hz ,频率分辨率 f ?=s f f N ?= =0.5Hz 。 最高频率c f =30f =3Hz ,s f >2c f ,故满足采样定理,不会发生混叠现象。 截断长度02T T =,整周期截取,不会发生栅栏效应。理论上有一定的泄漏,但在整周期 截取的情况下,旁瓣上的采样都约为 0,泄漏现象没有体现出来。 频谱图如下:

幅值误差0A ?=,相位误差0??=。 2) 采样频率08s f f =,截断长度N=32; 取02ωπ=rad/s ,则0f =1Hz,s f =8Hz ,频率分辨率f ?=s f f N ?==0.25Hz 。 最高频率c f =30f =3H z,s f >2c f ,故满足采样定理,不会发生混叠现象。 截断长度04T T =,整周期截取,不会发生栅栏效应。理论上有一定的泄漏,但在整周期 截取的情况下,旁瓣上的采样都约为 0,泄漏现象没有体现出来。 频谱图如下:

幅值误差0A ?=,相位误差0??=。 2. 00()sin()sin116x t t t π ωω=++ 1) 采样频率08s f f =,截断长度N=16; 取02ωπ=ra d/s,则0f =1Hz ,s f =8Hz,频率分辨率f ?=s f f N ?==0.5H z。 最高频率c f =110f =11H z,s f <2c f ,故不满足采样定理,会发生混叠现象。 截断长度02T T =,整周期截取,不会发生栅栏效应。理论上有一定的泄漏,但在整周期 截取的情况下,旁瓣上的采样都约为 0,泄漏现象没有体现出来。 频谱图:

快速傅里叶变换实验报告

快速傅里叶变换实验报告 快速傅里叶变换实验报告 机械34班刘攀 2019010558 一、基本信号(函数)的FFT变换 1. x(t)=sin(ω0t+)+sin2ω0t+cos3ω0t 6 1) 采样频率fs=8f0,截断长度N=16; 取ω0=2πrad/s,则f0=1Hz,fs=8Hz,频率分辨率?f=?f=fs=0.5Hz。 Nπ最高频率fc=3f0=3Hz,fs>2fc,故满足采样定理,不会发生混叠现象。截断长度T=2T0,整周期截取,不会发生栅栏效应。理论上有一定的泄漏,但在整周期截取的情况下,旁瓣上的采样都约为 0,泄漏现象没有体现出来。 频谱图如下: 幅值误差?A=0,相位误差??=0。 2) 采样频率fs=8f0,截断长度N=32; 取ω0=2πrad/s,则f0=1Hz,fs=8Hz,频率分辨率?f=?f=fs=0.25Hz。 N最高频率fc=3f0=3Hz,fs>2fc,故满足采样定理,不会发生混叠现象。截断长度T=4T0,整周期截取,不会发生栅栏效应。理论上有一定的泄漏,但在整周期截取的情况下,旁瓣上的采样都约为 0,泄漏现象没有体现出来。 频谱图如下: 幅值误差?A=0,相位误差??=0。 2. x(t)=sin(ω0t+π 6)+sin11ω0t 1) 采样频率fs=8f0,截断长度N=16; 取ω0=2πrad/s,则f0=1Hz,fs=8Hz,频率分辨率?f=?f=fs=0.5Hz。 N最高频率 fc=11f0=11Hz,fs 漏,但在整周期截取的情况下,旁瓣上的采样都约为 0,泄漏现象没有体现出来。 频谱图:

由上图可以看出,并未体现出11f0的成分,说明波形出现混叠失真。为了消除混叠 现象,应加大采样频率,使之大于等于 22Hz。 f0处的幅值误差?A=0,11f0处由于出现 了混叠现象,幅值误差没有意义;相位误差??=0。 2) 采样频率fs=32f0,截断长度N=32; 取ω0=2πrad/s,则f0=1Hz,fs=32Hz,频率分辨率?f=?f=fs=1Hz。 N最高频率 fc=11f0=11Hz,fs>2fc,故满足采样定理,不会发生混叠现象。 漏,但在整周期截取的情况下,旁瓣上的采样都约为 0,泄漏现象没有体现出来。 频谱图: 该频谱图体现出了f0和11f0的成分,说明未失真,且幅值均为1,。幅值误差?A=0,相位误差??=0。 3. x(t)=0t 1) 采样频率fs=8f0,截断长度N=16; 取ω0=2πrad/s,则f0=1Hz,fs=8Hz,频率分辨率?f=?f=fs=0.5Hz。 N最高频率f cf 0Hz,fs>2fc,故满足采样定理,不会发生混叠现象。 频谱图: 在忽略旁瓣信号的情况下,可近似认为: x(t)≈0.9098cos(3ω0t+56.9520?) 故幅值误差?A=0.9096-1=-0.0904,相位误差??=56.9520?。 2) 采样频率fs=32f0,截断长度N=32; 取ω0=2πrad/s,则f0=1Hz,fs=32Hz,频率分辨率?f=?f=fs=1Hz。N最高频率f cf 0Hz,fs>2fc,故满足采样定理,不会发生混叠现象。 频谱图: 在忽略旁瓣信号的情况下,可近似认为:

(完整版)傅里叶变换分析

第一章 信号与系统的基本概念 1.信号、信息与消息的差别? 信号:随时间变化的物理量; 消息:待传送的一种以收发双方事先约定的方式组成的符号,如语言、文字、图像、数据等 信息:所接收到的未知内容的消息,即传输的信号是带有信息的。 2.什么是奇异信号? 函数本身有不连续点或其导数或积分有不连续点的这类函数统称为奇异信号或奇异函数。例如: 单边指数信号 (在t =0点时,不连续), 单边正弦信号 (在t =0时的一阶导函数不连续)。 较为重要的两种奇异信号是单位冲激信号δ(t )和单位阶跃信号u(t )。 3.单位冲激信号的物理意义及其取样性质? 冲激信号:它是一种奇异函数,可以由一些常规函数的广义极限而得到。 它表达的是一类幅度很强,但作用时间很短的物理现象。其重要特性是筛选性,即: ()()()(0)(0)t x t dt t x dt x δδ∞ ∞ -∞ -∞ ==? ? 4.什么是单位阶跃信号? 单位阶跃信号也是一类奇异信号,定义为: 10()00t u t t >?=?

12()()()x t ax t bx t =+,其中a 和b 是任意常数时, 输出信号()y t 是1()y t 和2()y t 的线性叠加,即:12()()()y t ay t by t =+; 且当输入信号()x t 出现延时,即输入信号是0()x t t -时, 输出信号也产生同样的延时,即输出信号是0()y t t -。 其中,如果当12()()()x t x t x t =+时,12()()()y t y t y t =+,则称系统具有叠加性; 如果当1()()x t ax t =时,1()()y t ay t =则称系统具有均匀性。 线性时不变系统是最基本的一类系统,是研究复杂系统,如非线性、时变系统的基础。 6.线性时不变系统的意义与应用? 线性时不变系统是我们本课程分析和研究的主要对象,对线性时不变性进行推广,可以得到线性时不变系统具有微分与积分性质,假设系统的输入与输出信号分别为()x t 和()y t ,则 当输入信号为 ()dx t dt 时,输出信号则为() dy t dt ; 或者当输入信号为()t x d ττ-∞ ?时,输出信号则为()t y d ττ-∞ ?。 另外,线性时不变系统对信号的处理作用可以用冲激响应(或单位脉冲响应)、系统函数或频率响应进行描述。而且多个系统可以以不同的方式进行连接,基本的连接方式为:级联和并联。 假设两个线性时不变系统的冲激响应分别为:1()h t 和2()h t , 当两个系统级联后,整个系统的冲激响应为:12()()*()h t h t h t =; 当两个系统并联后,整个系统的冲激响应为:12()()()h t h t h t =+; 当0t <时,若()0h t =, 则此系统为因果系统; 若|()|h t dt ∞ -∞<∞?, 则此系统为稳定系统。 第二章 连续时间系统的时域分析 1.如何获得系统的数学模型? 数学模型是实际系统分析的一种重要手段,广泛应用于各种类型系统的分析和控制之中。 不同的系统,其数学模型可能具有不同的形式和特点。对于线性时不变系统,其数学模型

快速傅里叶变换实验报告

快速傅里叶变换实验报告 机械34班 攀 2013010558 一、 基本信号(函数)的FFT 变换 1. 000()sin()sin 2cos36 x t t t t πωωω=+++ 1) 采样频率08s f f =,截断长度N=16; 取02ωπ=rad/s ,则0f =1Hz ,s f =8Hz ,频率分辨率f ?=s f f N ?==0.5Hz 。 最高频率c f =30f =3Hz ,s f >2c f ,故满足采样定理,不会发生混叠现象。 截断长度02T T =,整周期截取,不会发生栅栏效应。理论上有一定的泄漏,但在整周期 截取的情况下,旁瓣上的采样都约为 0,泄漏现象没有体现出来。 频谱图如下:

幅值误差0A ?=,相位误差0??=。 2) 采样频率08s f f =,截断长度N=32; 取02ωπ=rad/s ,则0f =1Hz ,s f =8Hz ,频率分辨率f ?=s f f N ?==0.25Hz 。 最高频率c f =30f =3Hz ,s f >2c f ,故满足采样定理,不会发生混叠现象。 截断长度04T T =,整周期截取,不会发生栅栏效应。理论上有一定的泄漏,但在整周期 截取的情况下,旁瓣上的采样都约为 0,泄漏现象没有体现出来。 频谱图如下:

幅值误差0A ?=,相位误差0??=。 2. 00()sin()sin116 x t t t πωω=++ 1) 采样频率08s f f =,截断长度N=16; 取02ωπ=rad/s ,则0f =1Hz ,s f =8Hz ,频率分辨率f ?=s f f N ?==0.5Hz 。 最高频率c f =110f =11Hz ,s f <2c f ,故不满足采样定理,会发生混叠现象。 截断长度02T T =,整周期截取,不会发生栅栏效应。理论上有一定的泄漏,但在整周期 截取的情况下,旁瓣上的采样都约为 0,泄漏现象没有体现出来。 频谱图:

用Matlab对信号进行傅里叶变换实例

目录 用Matlab 对信号进行傅里叶变换 (2) Matlab 的傅里叶变换实例 (5) Matlab 方波傅立叶变换画出频谱图 (7)

用 Matlab 对信号进行傅里叶变换 1. 离散序列的傅里叶变换 DTFT(Discrete Time Fourier Transform) 代码: %原离散信号有 8 点 %原信号是 1行 8列的矩阵 %构建原始信号,为指数信号 %频域共-800 +800 的长度(本应是无穷, 高 %求 dtft 变换,采用原始定义的方法,对复指 7 subplot(311) 8 stem(n,xn); 9 title('原始信号(指数信号 )'); 10 subplot(312); 11 plot(w/pi,abs(X)); 12 title('DTFT 变换 ') 结果: 分析:可见,离散序列的 dtft 变换是周期的,这也符合 Nyquist 采样 定理的描述, 连续时间信号经周期采样之后, 所得的离散信号的频谱 是原连续信号频谱的周期延拓。 2. 离散傅里叶变换 1 N=8; 2 n=[0:1:N-1] 3 xn=0.5.^n; 4 5 w=[-800:1:800]*4*pi/800; 频分量很少,故省去) 6 X=xn*exp(-j*(n'*w)); 数分 量求和而得

与 1 中 DTFT 不一样的是, DTFT 的求和区间是整个频域,这对 N=8; % 原离散信号有 8 点 n=[0:1:N-1] %原信号是 1行 8列的矩阵 xn=0.5.^n; %构建原始信号,为指数信号 w=[-8:1:8]*4*pi/8; %频域共 -800 +800 的长度(本应是无穷, 高频分量很少, 故省去) X=xn*exp(-j*(n'*w)); %求 dtft 变换,采用原始定义的方法,对复指数分量求和而得 subplot(311) stem(n,xn); w1=[-4:1:4]*4*pi/4; X1=xn*exp(-j*(n'*w1)); title(' 原始信号 (指数信号 )'); subplot(312); stem(w/pi,abs(X)); title(' 原信号的 16 点 DFT 变换 ') subplot(313) stem(w1/pi,abs(X1)); title(' 原信号的 8 点 DFT 变换 ') 计算机的计算来说是不可以实现的, DFT 就是序列的有限傅里叶变换。 实际上, 1 中代码也只是对频域的 -800 +800 中间的 1601 结果图: 分析: DFT 只是 DTFT 的现实版本,因为 DTFT 要求求和区间无穷, 而 DFT 只在有限点内求和。 3. 快速傅里叶变换 FFT ( Fast Fourier Transform ) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

快速傅里叶变换实验

快速傅里叶变换实验

————————————————————————————————作者:————————————————————————————————日期: ?

实验七快速傅里叶变换实验 2011010541?机14 林志杭 一、实验目的 1.加深对几个特殊概念的理解:“采样”……“混叠”;“窗函数”(截断)……“泄漏”;“非整周期截取”……“栅栏”。 2.加深理解如何才能避免“混叠”,减少“泄漏”,防止“栅栏”的方法和措施以及估计这些因素对频谱的影响。 3.对利用通用微型计算机及相应的FFT软件,实现频谱分析有一个初步的了解。 二、实验原理 为了实现信号的数字化处理,利用计算机进行频谱分析――计算信号的频谱。由于计算机只能进行有限的离散计算(即DFT),因此就要对连续的模拟信号进行采样和截断。而这两个处理过程可能引起信号频谱的畸变,从而使DFT的计算结果与信号的实际频谱有误差。有时由于采样和截断的处理不当,使计算出来的频谱完全失真。因此在时域处理信号时要格外小心。 时域采样频率过低,将引起频域的“混叠”。为了避免产生“混叠”,要求时域采样时必须满足采样定理,即:采样频率fs必须大于信号中最高频率fc的2倍(fs>2fc)。因此在信号数字处理中,为避免混叠,依不同的信号选择合适的采样频率将是十分重要的。 频域的“泄漏”是由时域的截断引起的。时域的截断使频域中本来集中的能量向它的邻域扩散(如由一个δ(f)变成一个sinc(f),而泄漏的旁瓣将影响其它谱线的数值。时域截断还会引起“栅栏效应”,对周期信号而言,它是由于截断长度不等于周期信号的周期的整数倍而引起的。因此避免“栅栏”效应的办法就是整周期截断。 综上所述,在信号数字化处理中应十分注意以下几点: 1.为了避免“混叠”,要求在采样时必须满足采样定理。 为了减少“泄漏”,应适当增加截断长度和选择合适的窗 对信号进行整周期截取,则能消除“栅栏数应”。 增加截断长度,则可提高频率分辨率。 三、预习内容 熟悉Matlab语言、函数和使用方法;利用Matlab所提供的FFT函数编写程序。 四、实验内容及步骤 调通所编写的程序,对下列信号〔函数〕进行离散FFT变换,根据题目的要求……FFT变换点数〔截断长度〕及采样频率,计算各点的傅里叶变换值,画出频谱图,对典型的谱线标出其幅值及相角。 (-)内容: 1. t t t t x 3 cos 2 sin ) 6 sin( )(ω ω π ω+ + + = 代码: N=input('N='); n=input('n=');t=1:1:N;

实验五 快速傅里叶变换

CENTRAL SOUTH UNIVERSITY 数字信号处理实验报告 题目快速傅里叶变换 学生姓名 学院物理与电子学院 专业班级电子信息科学与技术1105班 学号140411072

实验五快速傅里叶变换 一、实验仪器 PC机一台、JQ—SOPC开发系统实验箱及辅助软件(DSP Builder、Matlab/Simulink、QuartusII、Modelsim)。 二、实验目得 1、了解快速傅里叶变换得基本结构组成、 2、学习使用DSP Builder设计FFT。 三、实验原理 1、FFT得原理: 快速傅里叶变换(FFT)就是离散傅里叶变换(DFT)得一种高效运算方法,它大大简化了DFT得运算过程,使运算时间缩短几个数量级、FFT算法可以分为按时间抽取(DIT)与按频率抽取(DIF)两类,输入也可分为实数与复数两种情况。八点时间抽取基—2FFT算法信号流图如图1示: 图18点基-2 DIT-FFT信号流图 四、实验步骤 1、将桌面得my_fft_8。mdl拷贝到“D:\Program Files\MATLAB71\work”(MATLAB安装目录下得work文件夹)处,并双击打开。

图5-1快速傅里叶变换系统图 图5—2 快速傅里叶变换子系统1图

图5—3快速傅里叶变换子系统2图

图5—3 快速傅里叶变换子系统3图 2、点击工具栏即可开始系统级simulink仿真,以验证该模型得正确性、在仿真进行过程中分别将三个输入控制开关打到000、001、010、011、100以选择五组输入数据进行FFT运算。 (1)当开关打到000时选择第一组数据{2.0,2.0,4。0,7。0,3.0,5。0,5、0,8.0},其运算结果应为36、-2、41+3.84i、—4+8i、0、4219+1.844i、—8、0。4102-1、84i、-4-8i、-2、422-3.844i。 (2)当开关打到001时选择第二组数据{1。1,5。0,10.5,15、3,20。2,25。7,30、6,40。1},其运算结果应该为148、5、-16、1+52、35i、-19.8+24、7i、-22、02+12。25i、—23.7、-22、1-12。15i、-19.8-24。7i、-16.9—52、45i、 (3)当开关打到010时选择第三组数据{5.6,5、0,15、8,20.4,25、2,35、1,40、2,45。0},其运算结果结果应该为192。3、-23.39+63、19i、—25。2+25、3i、-15.69+14。49i、—18、7、-15。81—14、39i、-25。2-25。3i、-23。51-63、29i。 (4)当开关打到011选择第四组数据{10、2,15。3,18。1,20。3,24.2,30、0,35.2,42、3},

离散傅里叶变换应用举例

x=[1,1,1,1];w=[0:1:500]*2*pi/500; [H]=freqz(x,1,w); magH=abs(H);phaH=angle(H); subplot(2,1,1);plot(w/pi,magH);grid;xlabel('');ylabel('|X|'); title('DTFT的幅度') subplot(2,1,2);plot(w/pi,phaH/pi*180);grid; xlabel('以pi为单位的频率');label('度'); title('DTFT的相角')

N=4;w1=2*pi/N;k=0:N-1; X=fft(x,N); magX=abs(X);phaX=angle(X)*180/pi; subplot(2,1,1);plot(w*N/(2*pi),magH,'--');axis([-0.1,4.1,0,5]);hold on; stem(k,magX);ylabel('|X(k)|');title('DFT的幅度:N=4');text(4.3,-1,'k'); hold off; subplot(2,1,2);plot(w*N/(2*pi),phaH*180/pi,'--');axis([-0.1,4.1,-200,200]); hold on; stem(k,phaX);ylabel('度');title('DFT的相角:N=4');text(4.3,-200,'k')

n=(0:1:9);x=cos(0.48*pi*n)+cos(0.52*pi*n); w=[0:1:500]*2*pi/500; X=x*exp(-1i*n'*w); magx=abs(X); x1=fft(x);magx1=abs(x1(1:1:10)); k1=0:1:9;w1=2*pi/10*k1; subplot(3,1,1);stem(n,x);title('signalx(n),0<=n<=9'); axis([0,10,-2.5,2.5]);line([0,10],[0,0]); subplot(3,1,2);plot(w/pi,magx);title('DTFT幅度');xlabel('w');axis([0,1,0,10]); subplot(3,1,3);stem(w1/pi,magx1);title('DFT幅度'); xlabel('频率(单位:pi)');axis([0,1,0,10]) 实验总结:补零运算提供了一个较密的频谱和较好的图示形式,但因为在信号中只是附加了零,而没有增加任何新的信息,因此不能提供高分辨率的频谱。

实验二 快速傅里叶变换算法实验

快速傅里叶变换算法实验 院系:电子与信息工程学院 班级:电信10-2 姓名:张玥 学号:10071201026 指导老师:郜参观

快速傅里叶变换算法实验 一、实验目的 1、加深对DFT算法原理和基本性质的理解; 2、熟悉FFT算法原理和FFT子程序的应用; 3、学习用FFT对连续信号和时域信号进行谱分析的方法,了解可能 出现的分析误差及其原因,以便在实际中正确应用FFT。 二、实验设备 计算机 CCS2.0版软件实验箱 DSP仿真器 三、基本原理 1、离散傅里叶变换DFT的定义:将时域的采样变换成频域的周期性离散函数,频域的采样也可以变换成时域的周期性离散函数,这样的变换称为离散傅里叶变换,简称DFT。 2、FFT是DFT的一种快速算法,将DFT的步运算减少为 步,极大地提高了运算速度。 3、旋转因子的变化规律。 4、蝶形运算规律。 5、基2FFT算法。 四、实验步骤 复习DFT的定义、性质和用DFT作谱分析的有关内容; 1、复习FFT算法原理与编程思想,并对照DIT-FFT运算流程图 和程序框图,了解本试验提供的FFT子程序; 2、阅读本实验所提供的样例子程序;

3、运行CCS软件,对样例程序进行跟踪,分析结果;记录 必要的参数。 4、填写实验报告。 5、提供样例程序实验操作说明。 A、实验前准备: ⑴、开关K9拨到右边,即仿真器选择连接右边的CPU:CPU2; ⑵、“A/D转换单元”的拨码开关设置; ⑶、拨码开关设置: JP3拨码开关: SW2拨码开关:

S23拨码开关: ⑷、检查:计算机、DSP仿真器、实验箱是否正确连接。 正确完成计算机、DSP仿真器和实验箱的连接后,系统上电。 B、实验 ⑴、启动CCS2.0,project/open打开“algorithm”目录“exp01_cpu2”中子目录下“exp01.pjt”工程文件;双击“exp01.pjt”及“source”可查看各源程序;加载“exp01.out”;在中断子程序中,flag=0处设置断点;单击“run”运行程序,程序将运行至断点处停止,如图(一)所示;

相关文档
最新文档