声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1492|回复: 0

[FFT] 哪位朋友对HRFT比较清楚,给讲解下

[复制链接]
发表于 2009-7-7 10:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
网上看到了一篇相关文章,但资料很少,摸不着头脑,希望清楚的朋友给介绍下。
相关文章:
如果你只是对计算小频率范围上的频谱有兴趣,那HRFT可能比FFT更有效。频率范围越窄,HRFT的吸引力就越大。当必须利用有限的存储资源在嵌入式系统中执行运算时,这一点尤为明显。
许多科学和工程应用都要求信号准确的频谱或傅立叶变换。式1以无量纲形式(dimensionless form)给出,其中Ω =ΩT,T是采样间隔,q[n] = q(nT),代表信号q(t)的第n次采样。该式也假设信号为有限长序列,故总共仅有N个连续采用点。Q(Ω)是连续变量Ω的周期函数,周期为2e。
常规求解方法是在区间Ω = [0,2e]内的N个均匀间隔点上计算Q(Ω)的值。这个过程叫做离散傅立叶变换(DFT),通常利用快速傅利叶变换(FFT)的算法来完成。DFT给出点Ω= 2ek/N (k = 0...N -1)的傅立叶变换,从而按照实际频率给出了Ω=2e/(NT)或f=1/(NT)的分辨率。对许多应用来说,这种分辨率可能已经足够。
对于某些应用,必须非常准确地确定频谱峰值(spectralpeak)的位置。在这种情况下,DFT提供的分辨率可能不够。提高分辨率的方法之一就是简单地用额外的零来增加采样点。例如,为加倍频率分辨率,你可以在q[n]序列末尾增添N个零,使总的序列长度为2N。DFT将在2N个点上计算Q(Ω),从而使分辨率提高一倍。
信号采样序列的傅立叶变换如式1所示。
为提高分辨率而增加的零的个数是有限制的。通常,只有在很小的频率范围内才需要提高分辨率。这里提供了一种简洁明了的办法,那就是直接在你感兴趣的频率范围上计算式1。下面给出有效算法。
采用欧拉恒等式,我们可以把式1分为实数和虚数两部分:
通过契比雪夫多项式(Chebyshev polynomials),我们从sinΩ和cosΩ开始,有效地进行sin(nΩ)和cos(nΩ)的递归运算。
在式4和式5中,已知T0 =1、T1=cosΩ、U0=1以及U1=2cosΩ,我们可以利用下列公式计算每一个Tn和Un。
现在我们只需要cosΩ和sinΩ,就能够以任意的高分辨率(远大于标准FFT)在一个非常小的频率范围上计算子频谱了。这一程序hrft用C语言编写,执行如下:
hrft f1 f2 Nf N sps infile outfile
其中,f1=开始频率(Hz),f2=终止频率(Hz),Nf=计算FT的频率点数, N=从输入文件读取的采样点数,sps=每秒采样点数,infile=输入文件,outfile=输出文件。
图中显示了由FFT算法产生的从2260Hz到2268 Hz的部分频谱,以及由高分辨率傅立叶变换(HRFT)在该频率范围上产生的频谱。
两种方法都采用了相同的2048点数据集。FFT具有4 Hz/bin的分辨率,HRFT计算了41个点,分辨率为0.2Hz/bin。显然,41点的HRFT3比3点FFT的图更平滑。数据集的主要频率为2265Hz,据此我们可以看出HRFT方法准确定位了频率峰值,而用FFT定位的峰值则偏离了1Hz。为了利用FFT获得同样好的分辨率,必须添加零,以达到65,536个点的序列长度。
如果你只是对计算小频率范围上的频谱有兴趣,那HRFT可能比FFT更有效。频率范围越窄,HRFT的吸引力就越大。当必须利用有限的存储资源在嵌入式系统中执行运算时,这一点尤为明显。
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-21 04:38 , Processed in 0.047822 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表