关键字 |
FFT, DFT, Twiddle因子,MATLAB, Window |
介绍 |
将离散傅里叶变换(DFT),将指数函数或周期信号转换为正弦和余弦函数或A - jB形式。将长度为n的离散信号x (n) (n为离散信号的时域指数)转换为长度为n的离散频域信号,其中k (k为离散信号的频域指数)取值范围为0 ~ n - 1。输入样本与复DFT输出信号的正弦和余弦的关系为: |
![图像](//www.cheescube.com/articles-images/IJAREEIE-996-e001.gif) |
图01为DFT工具,将时域采样数据转换为频域采样数据,反之亦然。DFT在数字频谱分析领域的应用包括频谱分析仪、语音处理、成像和模式识别。FFT实际上是一种实现DFT的算法。L. G. Johnson(1992)提出了专用FFT硬件的无冲突内存寻址。针对高速单片机实现,提出了一种基于任意固定基快速傅里叶变换(FFT)的多库内存地址分配算法。内存分配和存储用于最小化内存大小,并允许同时访问计算每个基数所需的所有数据。还包含了旋转因子表查找的地址生成,具有体积小、速度快的特点。他和Torkelson(1998)提出了快速傅里叶变换-算法和应用介绍了快速傅里叶变换(FFT)的原理。它涵盖了FFTs,频域滤波,以及视频和音频信号处理的应用。它还采用了现代方法,如MATLAB示例和项目,以更好地理解各种FFTs。 Fast Fourier Transform - Algorithms and Applications is designed for senior undergraduate and graduate students, faculty, engineers, and scientists in the field, and selflearners to understand FFTs and directly apply them to their fields, efficiently. It provides a good reference for any engineer planning to work in this field, either in basic implementation or in research and development. Application of DFT is in field of Filter Design calculating Impulse Response from Frequency Response and calculating Frequency Response from Impulse Response |
![图像](//www.cheescube.com/articles-images/IJAREEIE-996-g001.gif) |
快速傅里叶变换(fft)是一种有效计算DFT的算法 |
在MATLAB中使用DFT命令可以很容易地确定DFT,使序列x (n) ={0,1,2,3}(其中n = 4)的DFT为: |
>> x = [0 1 2 3]; |
>> DFT = fft(x);% DFT |
>>图(1),干([0 1 2 3],实(dft)) |
>>图(2),茎([0 1 2 3],imag(dft)) |
> >传输线(dft) |
>> x = [0 1 2 3] |
X = 0 1 2 3 |
>> DFT = fft(x) |
DFT = 6.0000 -2.0000 + 2.0000i -2.0000 -2.0000 - 2.0000i |
图02显示了以实信号和虚信号大小为单位的DFT输出结果。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-996-g002.gif) |
对于FFT的发展,旋转因子WN起着重要的作用,这是由 |
这导致twiddle因子的定义为![图像](//www.cheescube.com/articles-images/IJAREEIE-996-e001a.gif) |
旋转因子就是用极坐标形式表示的正弦和余弦基函数。注意8点DFT 64的复数乘法。一般来说,n点DFT需要进行N2次复乘法。由于乘法函数需要相对大量的DSP处理时间,因此所需的乘法次数非常重要。事实上,计算DFT所需的总时间与乘法的次数加上所需的开销成正比。 |
确定DFT有三种方法(John G. Proakis et al, 2006)。首先是解析法(用公式)。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-996-e001b.gif) |
二是在公式中引入旋转因子。公式由 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-996-e001c.gif) |
第三种方法是矩阵法,公式如下所示: |
方法 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-996-e002.gif) |
与IDFT类似,这是由(John G. Proakis et al, 2006)给出的。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-996-e003.gif) |
MATLAB DFT中不使用负和零指标,因为MATLAB中的起始点指标为1。在光谱分析领域,DFT在医学成像、滤波器组、电信、数据压缩等方面都有应用。 |
和IDFT的矩阵公式 |
![](//www.cheescube.com/articles-images/IJAREEIE-996-e002a.gif) |
DFT对采样的周期时域信号进行处理。信号必须是周期性的,以便分解为正弦信号的和。可输入DFT的样本数量有限(N)。这种困境是通过放置无限组相同的N个样本“端到端”来克服的,从而迫使数学(但不是现实世界)周期性。n点DFT的方程为: |
![](//www.cheescube.com/articles-images/IJAREEIE-996-e004.gif) |
其中X (k)为频域信号,k为离散信号的频域指数。N为离散序列的总长度。X (n)为离散时域信号,其中n为离散信号的时域指数。k和n的取值范围为0 ~ n - 1。DFT输出谱X(k)是输入时间样本与N余弦和N正弦波之间的相关性。图03显示了相关的概念。在该图中,计算了前四个输出频率点的实部,因此只显示了余弦波。为了计算输出频谱的虚部,正弦波也采用了类似的程序。第一个点X(0)是输入时间样本的和,因为cos(0) = 1。缩放因子,1/N,没有显示,但必须出现在最终结果中。 X (0) is the average value of the time samples, or simply the DC offset. The second point, Re X(1), is obtained by multiplying each time sample by each corresponding point on a cosine wave which makes one complete cycle in the interval N and summing the results. The third point, Re X(2), is obtained by multiplying each time sample by each corresponding point of a cosine wave which has two complete cycles in the interval N and then summing the results. Similarly, the fourth point, Re X(3), is obtained by multiplying each time sample by the corresponding point of a cosine wave which has three complete cycles in the interval N and summing the results. This process continues until all N outputs have been computed. A similar procedure is followed using sine waves in order to calculate the imaginary part of the frequency spectrum. The cosine and sine waves are referred to as basic functions. Correlation of time samples with basic functions using the DFT for N = 8 are shown below: |
![图像](//www.cheescube.com/articles-images/IJAREEIE-996-g003.gif) |
快速傅里叶变换(fft)和离散傅里叶变换(dft) |
对于N = 1024点的DFT计算,DFT需要1048.576次计算,而对于FFT需要10,240次计算。FFT要快100多倍。然而,给出的计算次数是从1024个样本中计算1024次谐波。如表I所示,当FFT点大小增加到几千个时,FFT相对于DFT的计算效率变得非常显著。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-996-e005.gif) |
![图像](//www.cheescube.com/articles-images/IJAREEIE-996-t001.gif) |
n = 256时矩形、汉明和布莱克曼窗口的频率响应 |
在信号处理中,窗口函数是一种数学函数,它在选定的区间之外为零。窗函数的应用包括光谱分析、滤波器设计和非负平滑“钟形”曲线。对于频谱分析,函数cos ωt为零,除了频率±ω为傅里叶变换的输出。然而,许多其他函数和波形没有方便的闭合形式变换。 |
在任何一种情况下,傅里叶变换都可以应用于波形的一个或多个有限间隔上。一般来说,变换应用于波形和窗口函数的乘积。任何窗口都影响用这种方法计算的谱估计。FFT窗口减小了泄漏的影响,只改变了泄漏的形状。信号在有限的测量时间或“窗口”内测量。在n =±n处截断无限级数,可以将无限持续时间的脉冲响应转换为有限持续时间的脉冲响应。但是,这将导致数字滤波器的通带和止带出现不必要的振荡。这是由于傅立叶级数在不连续点附近的缓慢收敛。通过使用一组限时加权函数w (n)(称为窗口函数)来修改傅里叶系数,可以减少这些不希望出现的振荡。 |
有各种各样的窗口函数,如矩形,汉明,汉宁,布莱克曼和凯撒窗口函数,它们将H (ejω)中的不连续转换为不连续两侧值之间的过渡带。这里我们以窗口i为例,即汉明窗口。 |
图4 (a)显示了汉明窗口。这些表示了高通滤波器的汉明窗频率响应,图4 (b)表示了低通滤波器的汉明窗频率响应。与矩形窗和布莱克曼窗相比,它的主瓣透射宽度适中。最小阻带衰减约为-53 dB,第一波瓣峰值约为-43 dB。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-996-g004.gif) |
由于数据窗口端点的不连续和谐波的产生,泄漏出现在频域。除了旁瓣外,正弦波的主瓣被覆盖在几个频率箱上。这一过程类似于将输入正弦波乘以矩形窗口脉冲,矩形窗口脉冲具有熟悉的[sin(x) / x]频率响应和相关的涂抹和旁瓣。窗函数数据点通常是预先计算的。将窗口函数数据点存储在DSP内存中,使其对FFT处理时间的影响最小化。矩形窗口、汉明窗口和布莱克曼窗口的频率响应如图5所示。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-996-g005.gif) |
快速傅里叶变换和matlab实现 |
信号是一维、二维或多维物理变量,它随时间、空间或任何自变量而变化。信号主要有两类。第一个是连续时间信号,第二个是离散时间信号。信号的主要来源是连续时间信号。利用采样技术可以将连续时间信号转换为离散时间信号。在离散时间信号中,时间为离散形式,幅度为连续形式。图6为连续时间和离散时间信号。下延数字信号是完全离散的信号;时间和幅度都是离散形式。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-996-g006.gif) |
类似地,周期信号和非周期信号是两种类型。周期信号包含基周期T,基周期T是信号重复的最小时间间隔。周期T是f的倒数(T = 1/f)谐波频率为kf或kf0。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-996-g007.gif) |
任何周期信号都可以近似为在该信号的谐波频率(kf0)上具有适当的幅值和相位的许多正弦信号的和。正弦信号是由正、负谐波频率的复指数函数组成。欧拉公式 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-996-e006.gif) |
利用傅里叶分析,表中显示了时域信号与频域信号的关系: |
![图像](//www.cheescube.com/articles-images/IJAREEIE-996-t002.gif) |
最后两个变换是非常有用的,因为离散是与timeÃⅰÂ′Â域和频域相关联的,因为计算机只能接收有限的离散时间信号。利用傅里叶级数表示,我们得到了有限长度信号的离散傅里叶变换(DFT)。DFT可以将timeÃⅰÂ′Â域离散信号转换为频域离散频谱。假设对于信号x [n],其中n从n = 0到n - 1不等。那么信号的DFT就是一个序列 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-996-e007.gif) |
输出信号X [k]为频域信号,由于k的存在,频域信号本质上是完全离散的,k在0到N - 1之间变化。电机电流、电压、速度、电磁转矩以及电源主电流被感知和分析(Namburi N. R. et. al, 1985)。应用FFT分析得到了电机频域电流。仿真模型如图8所示,仿真结果如图9所示。图10显示了故障条件的结果。 |
![图像](//www.cheescube.com/articles-images/IJAREEIE-996-g008.gif) |
![图像](//www.cheescube.com/articles-images/IJAREEIE-996-g009.gif) |
结论 |
从图9和图10的仿真结果及其FFT分析可以看出,与健康电机相比,在电机相接端A相有一个单尖峰且另一个谐波较小。最近的发展已经在傅里叶方法的应用问题,由于计算的努力,将不是可处理的,如果不是使用DFT-FFT方法。目前,一些专门用于实时数字傅里叶方法的计算机正在研制中。有许多领域可以预期将来会有更大程度的发展。微分方程的数值求解、多时间序列分析、滤波和图像处理是其中的一些问题。 |
|
参考文献 |
- Grewal b.s., Grewal J. S.,高等工程数学,Khanna出版社,第40版,ISBN No. 81-7409-195- 5,2007。
- Johnson L.G,“专用FFT硬件的无冲突内存寻址”,电路与系统II:模拟和数字信号处理,IEEE汇刊,卷:39,Issue: 5 pp. 312 - 316, 1992年5月。
- John G. Proakis, Dimitris K Manolakis,“数字信号处理”(第4版),ISBN-13: 978-0131873742, 2006。
- FORTRAN 77中的数值公式:科学计算的艺术(ISBN 0-521-43064-X)的样本页,版权归剑桥大学出版社所有(C) 1986-1992。
- http://www.aip.de/groups/soe/local/numres/bookfpdf/f12-2.pdf
- http://www.dspguide.com/ch8/6.htm
- Steven W. Smith, 1997,《数字信号处理科学家和工程师指南》,加州技术出版社,ISBN 0-9660176-3-3, 1997。
- http://www.ele.uri.edu/~hansenj/projects/ele436/fft.pdf
- Emmert, J.M, BadhriJagannathan, SandeepUmarani(2003),一种适用于片上生成和分析正弦信号的FFT近似技术,VLSI系统中的缺陷和容错,2003。第18届IEEE国际研讨会论文集,第361-368页,2003年11月3-5日。
- http://www.cs.cmu.edu/afs/andrew/scs/cs/15-63/2001/pub/www/notes/fourier/fourier.pdf
- http://www.analog.com/static/imported-files/seminars_webcasts/MixedSignal_Sect5.pdf
- http://www.staff.vu.edu.au/msek/frequency%20analysis%20-%20fft.pdf
- 李志刚,“PWM电源对感应电机时域响应的影响”,电机工程学报。工业应用,vol. IA - 21, no。2,第448 - 455页,1985年3月。
- Shousheng。He和Mats Torkelson,“1024点管道FFT处理器的设计与实现”,IEEE自定义集成电路会议,1998年5月,第131-134页。
- 何寿生和Mats Torkelson,“用于OFDM(去)调制的管道FFT处理器设计”,IEEE信号,系统和电子,1998年9月,第257-262页。
- 何寿生,“一种新型的流水线FFT处理器”,IEEE并行处理研讨会,1996年4月,第776-780页
|