快速傅里叶分析(共9篇)
快速傅里叶分析 篇1
对风机的机械性能指标进行长期的动态监测, 并对其机械振动进行研究和对其故障进行诊断分析、维护是当前各个工矿企业正常运作的一个重要环节。通过对风机设备振动的分析和研究, 可以较为准确地了解风机在工作中的运行状态, 及早检测发现风机整体或局部问题及其原因, 并及时采取相应的处理措施, 从而确保生产的安全、高效进行。
1 快速傅里叶变换和小波变换原理
1.1 快速傅里叶变换
快速傅里叶变换原理:在DFT中, 我们令系数WN=e-j2π/N, 由此可看出系数WN的一些性质。
为简单起见, 我们取N为2的整数次幂, 根据系数的对称性, 则有:
公式 (1) 只计算出了前N/2个点, 根据系数的对称性, 则有:
此时, 可以将1个N点的变换分解为2个N/2点的变换, 并且可以依据这种模式继续分解下去。这就是Cooley-Turkey的FFT算法的基本原理。它基本上分为时间抽取 (DIT-FFT) 算法和频率抽取 (DIF-FFT) 算法两类。
1.2 小波变换
“小波变换”概念最早于1984年由J.Morlet提出, 其基本思想是把信号投影在由一簇基函数张成的空间上。利用小波分析, 不仅能将信号在时间和频率上独立分解, 还能保证不丢失原有的信号特征, 被誉为信号分析中的“显微镜”。
2 风机振动的监测和分析
在整个风机系统中, 电机和风机轴承是核心部件, 也是风机运行故障的主要来源, 因此, 应被当作监测对象。据统计, 在所有风机故障中, 近70%的故障与转轴及其组件系统有直接的关系。因此, 对于风机而言, 检测点最好设在轴承部位, 且选择探头与机械接触较好、刚度较高之处作为测试点。
2.1 监测参数的选择
监测参数的选择原则为:对于低频 (振动频率小于10 Hz) 振动, 常取位移作为测量参数;对于中频 (振动频率在10~1 000 Hz之间) 振动, 取速度作为测量参数;对于高频 (振动频率在1~10 k Hz) 振动、随机振动等, 常将加速度作为测量参数。本文选择振动速度作为测量参数。
2.2 数据采集
振动一般由一系列简谐振动分量、其他形式的振动及噪声叠加形成, 因而对于振动信号的监测, 通常选取振动加速度、振动速度或振动幅值等作为测量参数。依据振动参数选择原则, 本文选用SG-2磁电式速度传感器。该速度传感器可输出微弱的电荷信号, 经电荷放大器和电压放大器后送入A/D转换器;将采集到的振动数据输入工具软件中进行信号数据分析和处理, 以此获取风机运行的振动状态及可能出现的故障点。
2.3 风机振动的判别标准
本文选用的是ISO 02372振动标准。ISO 02372振动标准是一种根据轴承振动烈度来评定机器质量的标准。本文所研究的风机属于第Ⅲ类风机。通常, 这类风机A振动区域的速度值为0.28~1.8 mm/s, B振动区域的速度值为1.8~4.5 mm/s, C振动区域的速度值为4.5~11.2 mm/s, D振动区域的速度值大于11.2 mm/s。根据此判别标准, 可确定设备的维修情况, 加强对C区域振动的监测。必要时, 还要加大监测力度。
3 基于FFT与小波变换的故障信号提取
3.1 风机技术参量
本文研究的风机技术参量:主风机安装轴承处的轴直径190mm, 叶片数13, 双列向心短圆柱轴承转速1 000 r/min, 转动频率fr=n/60=16.67 Hz, 叶轮通过频率fz=frZ=16.67×13=216.71 Hz (Z为叶片数) ;电动机转速1 000 r/min, 转频16.67 Hz。考虑到高次谐波, 转频的频段出现在中高频段, 选取振动速度作为测量参数。
3.2 故障信号的时域分析
在不平衡故障中, 主要振动特征就是存在以工频为主的重复性成分, 因而其时间波形表现出显而易见的正弦波形状, 振动信号表现为明显的正弦变化, 初步判断该设备的故障类型为装置不平衡故障。
3.3 故障信号的FFT分析
经过FFT分析获得的频谱分析图仅表现出某一个频率在所有采样振动信号中的总强度, 不能很好地反映该频率所对应的时间方面的具体信息, 即频谱分析能反映频率特征, 对频率的时间分辨率较低。
3.4 故障信号的小波分析
小波分析法是一种分辨率较高的时频分析法。运用这一方法不仅可以进行时域上的分析, 还可以进行频域上的分析。另外, 运用小波分析法不仅能精确定位短时高频信号, 还能准确分析低频信号。本文选Biorthogonal双正交样条小波作为小波基函数, 重构滤波器阶数Nr=6, 分解滤波器阶数Nd=8, 分解层数为7, 提高了频率范围域中的分辨率和分析时间域中的精度。
3.5 故障诊断
引起风机异常的原因为转子组件不平衡。考虑到风机恶劣的工作环境及工作过程中的突发因素, 初步判断是因风机在运转过程中, 其转子出现一定的磨损或外部灰尘等杂质不均匀黏附等而使转子的质量中心发生偏移, 引发了不平衡故障, 导致风机异常。
4 结论
本文分别采用时域分析、频域分析、小波分析对不平衡振动信号进行了研究。通过这三种方法的分析和对比, 有效地提取了不平衡故障的特征, 并对风机故障进行了诊断, 解决了故障问题, 以免给工矿企业带来不必要的损失。
参考文献
[1]张梅军.机械状态监测与故障诊断[M].北京:国防工业出版社, 2008.
[2]陈凤仪.风机技术标准体系的研究[J].风机技术, 2009 (3) .
快速傅里叶分析 篇2
基于傅里叶变换红外光谱和聚类分析的真菌鉴别
摘要:傅里叶变换衰减全反射红外光谱法(FTIR-ATR)应用于微生物的快速鉴定及分类是近几年发展起来的一门新型技术.该文应用FTIR-ATR光谱法与聚类分析方法相结合对重要的植物病原真菌进行鉴别.在PDA玻璃纸平板上培养了来自14个属的17株真菌,用FTIR-ATR光谱法测其红外光谱,获得了分辨率高、重现性好的真菌红外谱图,分析主要吸收峰的.归属,确定了1800~1485,1485~1185与1185~900cm1三个分析灵敏区,并在此基础上进行了系统聚类分析,使所有测试菌株都得到正确归类.结果表明,傅里叶变换红外光谱技术具有快速、准确、易操作等优点,将成为微生物研究领域的一个重要工具. 作者: 柴阿丽 李金萍 石延霞 谢学文 李宝聚 Author: CHAI A-li LI Jin-ping SHI Yan-xia XIE Xue-wen LI Bao-ju 作者单位: 中国农业科学院蔬菜花卉研究所,北京,100081 期 刊: 光谱学与光谱分析 ISTICEISCIPKU Journal: SPECTROSCOPY AND SPECTRAL ANALYSIS 年,卷(期): , 30(11) 分类号: S642.2 关键词: 傅里叶变换红外光谱 真菌 衰减全反射 聚类分析 鉴别 机标分类号: O56 R37 机标关键词: 傅里叶变换红外光谱 系统聚类分析 真菌鉴别 Cluster Analysis Infrared Spectroscopy FTIR-ATR 衰减全反射红外光谱法 植物病原真菌 微生物 聚类分析方法 红外光谱技术 研究领域 快速鉴定 红外谱图 测试菌株 重现性 纸平板 吸收峰 分辨率 培养 基金项目: 国家(863计划)项目,国家自然科学基金项目,农业部园艺作物遗传改良重点开放实验室项目 基于傅里叶变换红外光谱和聚类分析的真菌鉴别[期刊论文] 光谱学与光谱分析 --2010, 30(11)柴阿丽 李金萍 石延霞 谢学文 李宝聚傅里叶变换衰减全反射红外光谱法(FTIR-ATR)应用于微生物的快速鉴定及分类是近几年发展起来的一门新型技术.该文应用FTIR-ATR光谱法与聚类分析方法相结合对重要的植物病原真菌进行鉴别.在PDA玻璃纸平板上培养了来自14个...基于单片机的快速傅里叶算法实现 篇3
音乐频谱显示, 就是通过硬件或软件的方法, 随着音乐强弱和节奏的变化, 将音频信号中每个频率成分的幅值信息通过屏幕实时地显示出来。
2 硬件设计
其大体设计思路为:首先对音频信号进行采集, 经过数据处理后输出至端口, 最后驱动屏幕显示。最小系统, 是指芯片能够正常工作所需的最小电路。在最小系统的基础上进行外围电路的扩展, 便构成了整个系统电路。它外围电路主要包括电源电路、端口扩展电路和显示电路。
系统采用12V交流电输入, 经过整流、滤波、降压后, 将电源分为+9V、+5V、+3.3V三个部分, +9V电源主要为+3.3V电源模块提供输入电压, +3.3V主要为lm3s615提供电源, +5V为显示屏提供电源。
lm3s615有34个IO口, 在本系统中, 屏幕为18*20的点阵屏, 其中20根管脚用于传输数据, 18根管脚用于每列的控制。数据端采用串行输入并行输出芯片74HC595, 它最少只需3个IO口即可实现多位数据的输出, 而总的时延仅为几十纳秒。控制端采用3-8译码器74LS138。为满足本系统的要求, 使用了三块74HC595和三块74LS138来对端口进行扩展。最终使用了7个IO口, 即可实现对38个管脚的控制, 极大地节省了IO口的使用。
显示将使用20个三极管, 来控制LED的亮灭。LED点阵使用了360个普通的发光二极管, 按行20个和列18个依次排布。
3 软件设计
单片机以41 KHz的速率采集到的音频信号都是时域里面的离散信号, 需要对数据进行离散傅里叶变换 (DFT) 。如果直接用DFT算法进行谱分析和信号的实时处理, 那是不切实际的。考虑到单片机运算速度有限的特点, 在本系统中采用了分裂基快速算法, 使运算效率进一步提高, 主要是对蝶形运算和倒序运算的编程。为保持频谱显示的协调性, 加入了峰值缓慢下降程序。
3.1 蝶形运算
完成一个蝶形运算, 需要一次复数乘法和两次复数加法。经过一次分解后, 计算1个N点DFT共需要计算两个N/2点DFT和N/2个蝶形运算。而计算一个N/2点DFT需要 (N/2) 的平方次复数乘法和N/2 (N/2-1) 次复数加法。由此可见, 仅仅经过一次分解, 就使运算量减少近一半, 所以可以对N/2点DFT作进一步分解。从而使运算量大大地减少。可以归纳出一些对编程有用的运算规律:第L级中, 每个蝶形的两个输入数据相距B=2L-1个点;每级有B个不同的旋转因子;同一旋转因子对应着间隔为2L点的2M-L个蝶形。
总结上述运算规律, 便可采用下述运算方法。先从输入端 (第1级) 开始, 逐级进行, 共进行M级运算。在进行第L级运算时, 依次求出B个不同的旋转因子, 每求出一个旋转因子, 就计算完它对应的所有2M-L个蝶形。这样, 可用三重循环程序实现DIT-FFT运算。根据基2-FFT算法, N点FFT运算可以分成log2N级, 每一级都有N/2个蝶形运算。可见每个蝶形运算的输出都是由其输入值与某一正弦函数和余弦函数的乘积累加得到的。
3.2 倒序运算
以8点为例, 来阐述倒序它的规律所在。在运算M级蝶形运算之前应先对序列进行倒序。为叙述方便, 用J表示当前倒序数的十进制数值。对于N=2M, M位二进制数最高位的十进制权值为N/2, 且从左向右二进制位的权值依次为N/4, N/8, …, 2, 1。
因此, 最高位加1相当于十进制运算J+N/2。如果最高位是0 (J<N/2) , 则直接由J+N/2得下一个倒序值;如果最高位是1 (J≥N/2) , 则先将最高位变成0 (J⇐J-N/2) , 然后次高位加1 (J+N/4) 。但次高位加1时, 同样要判断0、1值, 如果为0 (J<N/4) , 则直接加1 (J⇐J+N/4) , 否则将次高位变成0 (J⇐J-N/4) , 再判断下一位;依此类推, 直到完成最高位加1, 逢2向右进位的运算。
3.3 峰值缓慢下降
为避免数据改变过于频繁, 使显示故加此算法其主要思路是:当前采样值与前一次采样值相比较, 若比前一次值高, 则更新数据, 否则, 在前一次值的基础上缓慢下降, 直至为零。中途若有数据更高, 则再次更新数据。如此循环, 便可实现峰值的缓慢下降。
4 系统测试
在完成硬件和软件的设计后, 需对整个系统进行测试以保证方案的可行性。测试可分为FFT算法的测试、数据采集测试和整体测试。
FFT算法测试:该测试为验证FFT算法得出的结果。主要测试环境为Microsoft VisualC++6.0。
数据采集测试:将音频信号输入至单片机, 再通过串口观察数据的变化, 观察工具为windows xp的超级终端。
整体测试:该测试主要是观察输出的频谱是否与电脑上显示的频谱一致。第一次输入1 KHz的正弦信号, 第二次输入普通音频信号, 再分别作对比。通过比较, 得到的结果与预期结果基本一致, 系统测试通过, 设计基本完成。将该频谱显示器放置在音响旁, 即实惠, 又能为我们的音乐增添一点色彩。
参考文献
[1]高西全, 丁玉美.数字信号处理[M].西安:西安电子科技大学出版社, 2008 (08) :11-223.
[2]杨颂华, 冯毛官, 孙万蓉, 胡力山.数字电子技术基础[M].西安:西安电子科技大学出版社, 2000 (07) :2-45.
[3]张富.C及C++程序设计[M].北京:人民邮电出版社, 2005 (07) 67-189.
信号处理中傅里叶变换简介 篇4
一、傅里叶变换的表述
在数学上,对任意函数f(x),可按某一点进行展开,常见的有泰勒展开和傅里叶展开。泰勒展开为各阶次幂函数的线性组合形式,本质上自变量未改变,仍为x,而傅里叶展开则为三角函数的线性组合形式,同时将自变量由x变成ω,且由于三角函数处理比较简单,具有良好的性质,故被广泛地应用在信号分析与处理中,可将时域分析变换到频域进行分析。
信号分析与处理中常见的有CFS(连续时间傅里叶级数)、CFT(连续时间傅里叶变换)、DTFT(离散时间傅里叶变换)、DFS(离散傅里叶级数)、DFT(离散傅里叶变换)。通过对连续非周期信号xc(t)在时域和频域进行各种处理变换,可推导出以上几种变换,同时可得出这些变换之间的关系。以下将对上述变换进行简述,同时分析它们之间的关系。
1、CFS(连续时间傅里叶级数)
在数学中,周期函数f(x)可展开为
由此类比,已知连续周期信号x(t),周期为T0,则其傅里叶级数为
其中,为了简写,有
其中,为了与复数形式联系,先由欧拉公式ejz=cosz+jsinz得
故有
令
则
对于Dn,有
n≤0时同理。故
CFS图示如下:
Figure 1
理论上,CFS对于周期性信号x(t)在任意处展开都可以做到无误差,只要保证n从-∞取到+∞就可以。在实践中,只要n取值范围足够大,就可以保证在某一点附近对x(t)展开都有很高的精度。
2、CFT(连续时间傅里叶变换)
连续非周期信号x(t),可以将其看成一连续周期信号期T0→∞。当然,从时域上将x(t)进行CFS展开,有 的周也可以反过来看成x(t)的周期延拓。
若令
则
有
T0→∞使得Ω0→0,则
由此,定义傅里叶变换与其逆变换如下 CFT:
CFT-1:
x(t)是信号的时域表现形式,X(jΩ)是信号的频域表现形式,二者本质上是统一的,相互间可以转换。CFT即将x(t)分解,并按频率顺序展开,使其成为频率的函数。上式中,时域自变量t的单位为秒(s),频域自变量Ω的单位为弧度/秒(rad/s)。
CFS中的Dn与CFT中的X(jΩ)之间有如下关系
即从频域上分析,Dn是对X(jΩ)的采样(可将Figure 1与Figure 2进行对比)。
CFT图示如下:
Figure 2
3、DTFT(离散时间傅里叶变换)
首先,先从连续信号得到离散信号。用冲激信号序列
对连续非周期信号xc(t)进行采样,采样间隔为Ts,有
此时的xs(t)还不是真正的离散信号,它只是在满足t = nTs的时间点上有值,在其它时间点上值为零。对xs(t)进行进一步处理有
规定
则
其中,x[n]是最终所得的离散信号。xs(t)自变量为t,其单位为秒s,间隔为TS;x[n]自变量为n,其单位为1,间隔为1。
从频域分析上有
其中
。令,定义
以上式为DTFT定义式。DTFT逆变换为
DTFT是在时域上对CFT的采样(图示可见Figure 3与Figure 4),在DTFT中,时域信号x[n]为离散的,而对应的频域表示X(ejω)为连续的,且有周期ωs = 2π。
X(ejω)与Xs(jΩ)之间的关系为
ω = ΩTs
Xs(jΩ)中,自变量Ω单位为弧度/秒(rad/s),周期为Ωs = 2π/Ts;X(ejω)中,自变量ω单位为弧度(rad),周期为ωs = 2π。
CFT时域采样图示如下:
Figure 3
DTFT图示如下:
Figure 4
4、DFS(离散时间傅里叶级数)
在离散时间信号x[n]基础上,用冲激序列
对DTFT中的X(ejω)进行采样,采样间隔为Δω = 2π/N,则有
而S(ω)的逆DTFT变换为
对Xs(ejω)进行逆DTFT变换,有
xs[n]相当于对x[n]进行了周期延拓,周期为N = 2π/Δω。由上式可得
若延拓周期N大于x[n]的时长,则延拓不会发生混叠,于是
k为任意整数
令周期信号,k为任意整数,则
有
取ω = 2πk/N,令
则有
是以k为自变量的函数,有以下性质
m为任意整数
即的周期为N。为了避免重复计算,我们只考虑一个周期N内的情况,即
同时,为时域表示,为频域表示。故定义DFS为
其逆变换为 的自变量n单位为1,周期为N;的自变量k单位为1,周期也为N。DFS应用于离散时间周期性信号中,其相当于在频域中
对DTFT采样,而对应地在时域中相当于对DTFT进行周期延拓(图示见Figure 5与Figure 6)。DFS与DTFT的关系为
DTFT频域采样图示如下:
Figure 5
DFS图示如下:
Figure 6
5、DFT(离散傅里叶变换)
在DFS基础上,取离散时间周期性信号0,1,2,…N-1这一个周期内的N个点,得
其中,RN[n]表示当n = 0,1,2,…N-1时函数取值为1,当n取其它值时函数取值为0。定义DFT为 的基础上,其逆变换为
xd[n]的自变量n单位为1,时长为N;Xd[k]的自变量k单位为1,时长也为N。DFT相当于对DFS的时域及频域都取0,1,2,…N-1这一个周期内的N个点。
6、傅里叶变换之间的关系
傅里叶变换之间的关系主要有两点,一是采样与周期延拓之间的对应关系,二是对自变量的替换关系。(1)采样与周期延拓之间的对应关系
采样与周期延拓之间是一种对应关系,时域中对信号采样相当于在频域中对信号进行周期延拓,同样地,频域中对信号采样相当于在时域中对信号进行周期延拓,二者间是对应与平行的关系,不存在因果关系。
傅里叶变换中的CFS、CFT、DTFT、DFS、DFT可由连续非周期信号xc(t)进行采样及周期延拓处理得到各种变换,它们之间的关系如图Figure 7与Figure 8:
Figure 7
Figure 8
上两图中,蓝色箭头表示在时域或频域中采取的主动措施,白色箭头表示在频域或时域中产生的相应变换。(2)对自变量的替换关系
在对信号进行采样与周期延拓的同时,对自变量进行某种替换,从而完成傅里叶变换类型的转变。
傅里叶变换中对自变量的替换情况如图Figure 9所示。CFS适用于连续周期性信号,其自变量t单位为秒(s),相应的幅频谱|Dn|中,自变量n单位为1。而CFT适用于连续非周期信号xc(t),其自变量t单位为秒(s),对应的频域信号为Xc(jΩ),其自变量Ω单位为弧度/秒(rad/s)。由CFS变成CFT相当于连续周期性信号的周期T0趋于无穷,而在频域中则为自变量的替换,由n变成Ω,替换关系为
DTFT适用于离散时间信号x[n],其自变量n单位为1,对应的频域信号为X(ejω),自变量ω单位为弧度(rad)。由CFT变成DTFT相当于对连续信号xc(t)采样及离散化,自变量由t替换为n,替换关系为t = nTs,而在频域中则为周期延拓及自变量的替换,由Ω替换为ω,替换关系为ω = ΩTs。
DFS适用于离散周期性信号频域信号为,其自变量n单位为1,对应的,自变量k单位为1。由DTFT变成DFS相当于在频
域中对X(ejω)进行采样、离散化与自变量替换,由ω替换为k,替换关系为ω = 2πk/N。
DFT的时域与频域序列长度都为N个点(0,1,2,…N-1),时域自变量n单位为1,频域自变量k单位为1。
由图Figure
7、Figure 8和Figure 9可以清楚地研究非相邻变换之间的关系。
Figure 9
二、与相关教材内容的辨析
1、《Signal Processing and Linear Systems》(B.P.Lathi, Oxford University Press)
书中首先将高等数学中的向量理论扩展到了信号系统中,引出正交信号空间的定义,指出任意信号x(t)可用正交信号空间的线性组合表示,进而引出三角傅里叶级数,将这种表示用三角函数的线性组合表示。CFS的来源介绍比我对CFS的自述更加详细具体,更有逻辑性,体现了高等数学的延伸,CFS定义部分与我的自述大体相同。
书中由CFS引出CFT,指出连续非周期信号xc(t)相当于将连续
周期性信号的周期T0趋于无穷,然后对xc(t)按照CFS方法展开,中间过程中引出了CFT。这一部分与我的自述大体相同。只是我在对傅里叶变换的总结中将xc(t)进行无混叠的周期性延拓,反向也得出了。这只是对傅里叶变换的又一种理解,但从本源上考虑,还应该是由连续周期性信号
得出连续非周期信号xc(t)。
书中接下来先介绍的是DFS。书中由CFS类比定义了DFS,定义为
其中,这种定义与我对DFS的自述略有差别。书中完全按照CFS的定义模式定义的,书上在此之后也按照CFS的模式给出了Dr的幅频谱与相频谱。而我的自述则采用类似CFT的定义方式,即正变换为从时域变到频域,逆变换为从频域变到时域,其次书中使用的字母表示方式与我的自述略有差异,不过本质上意义是相同的。
紧接着,书中由DFS引出了DFT,指出DFT的时域及频域都为N点有限序列,此处与我对DFT的自述大体相同,但未进行深入说
明。之后,类似于由CFS引出CFT,书中由DFS中的离散时间周期函数引出离散时间非周期函数x[k](令周期N0→∞),然后对x[k]按照DFS的方法展开,在中间推导过程中引出了DTFT。总之,在离散时间信号的傅里叶变换中,书上是类比CFS引出CFT的模式,由DFS引出DTFT,而DFT也由DFS引出,只是未做重点讲解,实质上是从时域角度出发,与连续时间信号进行同等过程的类比。我对离散时间信号傅里叶变换的自述则从频域角度出发,与连续时间信号的时域推导过程进行同等过程的类比。二者分析方向不同,顺序不同,但本质上是相同的。这也从侧面反映出傅里叶变换将单纯的时域分析引向时域与频域的双领域分析,增加了对信号分析与处理的方法与方向,有利于更好地对信号进行理解。
2、《信号与系统》
书中也是首先将高等数学中的向量理论扩展到了信号系统中,引出正交信号空间的定义,指出任意周期为T0的信号x(t)可进行正交分解,而正余弦信号集是比较特殊的正交信号集,并用正余弦信号集表示信号,达到一种分解的目的,从而定义出CFS,并将正余弦信号集进一步扩展为虚指数信号集,从而将指数形式的CFS表示出来。在表示方式上与我的自述基本相同。而书中对三角形式的CFS与指数形式的CFS总结比较清楚,并对各自形式的幅频谱进行了比较,指出指数形式CFS的频谱为双边谱,而三角形式的CFS的频谱为单边谱。而由CFS导出CFT的叙述则基本与我的自述相同,即连续非周
期信号xc(t)相当于将连续周期性信号的周期T0趋于无穷,然后对xc(t)按照CFS方法展开,中间过程中引出了CFT。
书中对DFS的描述,类比于对CFS的描述,采用离散形式的虚指数正交信号集对离散时间周期性信号表示,表示方式与上一本书相同。由DFS引出DTFT时类比于由CFS引出CFT的过程,将离散时间周期性信号周期趋于无穷,得出离散时间非周期性信号,按照DFS的方式对信号进行分解表示,在推导过程中引出DTFT的定义,过程与上一本书基本相同。而DTFT也可对离散时间周期性信号进行处理。对DFT并未做重点描述。
总之,两本书对傅里叶变换的描述都是先对连续时间信号进行讨论,然后离散时间信号中的讨论参考连续时间信号中的讨论,层次清晰,可比性强。我的自述主要侧重于对信号的时域或频域进行各种处理,引出傅里叶变换的各种形式,可加深对傅里叶变换各种形式之间关系的理解。
三、傅里叶变换的应用
1、应用
傅里叶变换主要是为了将一般性的信号用较规则的、性质良好的三角函数进行表示,从而可以从频域的角度进行信号分析与处理,扩充了信号分析与处理的分析领域,简化了分析与处理的过程。从理论上,CFS、CFT、DTFT、DFS、DFT在满足相应的条件下都可以使用。而在实际应用中,计算机只能处理离散的、序列长度有限的信号,故实际应用中,DFT具有应用价值,其它形式的傅里叶变换处理的信号
是连续的或无限长的,计算机无法处理,所以只能在理论上进行数学运算。而DFT利用计算机可以快速算出,被称为快速傅立叶变换(FFT)。FFT可以减少计算DFT时乘法的使用次数,简化运算,提高效率。而现代信号分析与处理中必然要对信号进行采样离散化,输入到计算机中进行处理,得到频域形式,所以DFT的实际应用是很广泛的。
2、限制条件及潜在问题
快速傅里叶分析 篇5
关键词:模式识别,轮廓特征,2-范数,傅里叶,图形识别
1 引言
模式识别 (Pattern Recognition) :是指对表征事物或现象的各种形式的 (数值的、文字的和逻辑关系的) 信息进行处理和分析, 以对事物或现象进行描述、辨认、分类和解释的过程, 是信息科学和人工智能的重要组成部分。
近年来, 用于认知的人工智能 (模式识别) 得到了很大的发展和进步, 从环境的认知, 到人体的认知;从静态的认知到动态的认知。有关认知方面的人工智能, 例如:人脸检测、表情识别、车辆检测、语音识别等领域都已基本迈向成熟, 步入应用阶段。
图像识别属于模式识别的研究领域, 利用计算机视觉特征和机器学习的知识对目标对象进行识别分析。目前, 在各国研究学者的努力下得到了极大的发展, 图形识别过程中处理逻辑较简单, 数据来源基本来自图像或视频流, 以像素点为基本处理元素[1]。
其中, 轮廓特征在众多特征表示中可以说是最基本、最容易得到的, 获取轮廓特征的主要及首要步骤就是轮廓点的采集。在传统的处理方法中, 直接数据来源就是图片, 在二值化、膨胀、腐蚀等预处理后, 各轮廓点坐标其实就是轮廓像素点的横、纵坐标值。每一个像素点与其相邻像素点之间的距离都是相同的, 即等步长点, 且可采集的轮廓点数目也是有限的。但在软件的实际应用中, 直接数据来源却不适合以图片作为输入而是把图形轮廓拐点 (图形端点) 当作输入参数。两种直接原始数据各有优缺点。图片做源数据的方式, 能够在最大程度上保留图形的原始数据特征, 并且可以从中提取到更多特征信息, 如轮廓特征、区域特征、光流特征等等, 但是预处理步骤较多, 容易受到噪声点和冗余数据的影响。而直接以轮廓拐点做源数据的方式, 可以直接跳过图片预处理阶段, 减少图片中噪声点的影响。以此为代价的是, 我们要自己补全其它轮廓点坐标, 更重要的是, 轮廓坐标是实数轴上的, 相邻点之间不一定是等步长的, 因此, 我们要考虑的是:每两个点之间的取点步长要取多少?取多少轮廓点合适?……
2 处理流程
本文研究的主要工作是当以图形轮廓点作为直接数据来源时, 探讨更合适的特征处理方式。
识别的主要处理过程如图1所示。
3 主要工作
3.1 采点
在传统处理方式中, 采点时通常会按顺或逆时针的顺序把所有轮廓点全部提取, 然后通过要采集的点数确定采点步长 (相邻两个采集的特征点之间相隔的轮廓点个数) 依次取出要处理的特征点。
但像前面所提到的, 以轮廓点作为输入时, 首先要处理的就是考虑用来采点的轮廓点数要取多少 (补点数目) 。但是, 本实验中的实际点列处理是在实数轴上的, 每个轮廓点间可采点数目是无限的, 要还原所有轮廓点是不现实的 (严重影响了算法在实际应用中的效率) 。因此本文中的处理方式是将等步长的概念由间隔特征点个数相同转为间隔特征点间的长度相同。
(1) 、确定特征点数目n;
(2) 、计算图形周长l;
(3) 、步长steplength=l/n;
确定步长后的采点方式有两种:1、直接按步长、边线端点计算下一个特征点, 其中不会特意保留轮廓端点;2、计算方式和1相同, 不同的是, 在计算特征点坐标时, 如果轮廓端点P与起点的距离小等于steplength, 则保留P作为当前特征点。
算法保留轮廓端点的特征点采集
输入:图形轮廓端点
输出:特征点集
(1) 、Feature Points=[]
(2) 、Feature Points (1) =End Points (1)
(3) 、Start Point=End Points (1)
End Point=End Points (2)
(4) 、根据特征点数k计算步长steplength for I=2:k
(5) 、根据Start Point、End Point、steplength计算下一个特征点add Point
(6) 、将在Start Point和add Point之间的轮廓端点全部加入Feature Points
(7) 、判断add Point是否超过End Point, 是, 则将图形下一条边的端点作为新的Start Point和End Point;否, 则把add Point作为新的Start Point
End
(8) 、检查Feature Points的特征点数目是否超过k个, 若是, 则随机删除多余的非轮廓端点。
算法结束
下面几张图为上述两种补点方式采完点后的图形与原始图形之间的对比。
由上面几幅图可知, 第二种补点方式与第一种方式相比更能保存原始图形的局部特征, 能有效减少噪声点的影响。
3.2 特征表示
常用的特征表示有两种:静态全局形状特征和局部的动态特征。静态全局形状特征包括:边界描述 (链码、傅里叶描述子、离散近似、累加角函数、椭圆傅里叶描述子等) 和区域描述 (基本形状量度、矩、特性、重构) ;局部的运动特征主要有:光流、运动方向、轨迹、位置、速度。
本文要探讨两种特征表示:2-范数描述子、一维离散快速傅里叶描述子。
假设Feature Points中的特征点坐标表示如下:
求出质心坐标 (形心) :
求出质心坐标后, 再按 (3-3) 式分别计算各轮廓点到质心的距离, 计算公式采用欧氏距离:
那么该图形轮廓的边界-质心距可表示为:
3.2.12-范数描述子
2-范数对D做归一化处理以消除空间尺度和距离长度的影响, 2-范数公式
向量D即为对应图形处理后的2-范数特征描述子。
3.2.2一维离散快速傅里叶变换
傅里叶描述子 (Fourier Descriptor, 简称FD) , 是模式识别最常用的轮廓特征, 是物体形状边界曲线的傅立叶变换系数, 它是物体边界曲线信号的频域分析的结果[2]。
傅里叶描述子 (FD) 常用来表示封闭曲线的形状特征, 其基本思想是将目标轮廓曲线建模成一维序列, 对该序列进行一维的傅立叶变换, 从而获得一系列的傅立叶系数, 用这些系数对该目标轮廓进行描述。傅立叶描述子方法有一系列优点, 如:计算原理简单, 描述清晰, 具有由粗及精的特性等[3]。
由于傅立叶变换将序列的主要能量集中在了低频系数上, 因此, 傅立叶描述子的低频系数反映了轮廓曲线的整体形状。
一维函数f (x) (其中x=0, 1, 2, …M-1) 的傅里叶变换的离散形式为:
一维离散傅里叶变换虽然原理简单, 也比较容易实现, 但在实际应用中直接实现效率较低, 因此在实际工程中, 迫切需要一种能够快速计算离散傅里叶变换的高效算法, 快速傅里叶变换 (Fast Fourier Transform, 简称FFT) 由此而生, 其基本思路就是将较长的序列转换成相对短得多的序列来大大减少运算量[4]。
本文实验中直接使用MATLAB软件中自带的一维离散快速傅里叶变换函数fft进行计算。
由图4可知, 取低频30维部分作为特征描述即可。
4 实验结果分析
图5为采不同轮廓点时, 2-范数描述子和一维离散快速傅里叶描述子识别正确率的比较结果。由图5可知, 2-范数识别正确率在90%~92%之间浮动, 在2-范数处理时, 如果要取得更好的实验结果, 则轮廓点数不能太少 (通常在200左右做取舍) , 但随着轮廓点数的增加, 处理难度和算法效率都会受到影响。傅里叶描述子在95%上下浮动, 识别效果比2-范数更理想、更稳定。而且该特征描述子对参与计算的轮廓点数目要求不大, 从而也大大减少了计算消耗的时间。
图6为3.1节中两种取点方式实验结果对比, 其中, 由于第二种取点方式 (保留轮廓端点) 能更完整地保留原始图形的局部特征, 因此其识别效果比第一种取点方式 (不特意保留轮廓端点) 要稳定。若采用局部特征作为图形的表示特征, 那么这两种取点方式的优劣性会更明显一些, 因为局部特征点对全局特征表示的影响相对较小。
图7和图8分别是第一种采点方式和第二种采点方式做十折交叉验证平均结果的混淆矩阵。
十折交叉验证:将样本数据集随机分割为大小相等的十份, 每次取其中一份作为预测集, 剩下九份数据作为训练集, 计算当前识别正确率, 循环计算十次, 将十次预测正确率的平均值作为最后的结果。
由于La、Lb、Lc、Ld四种图形的特点限制, 其样本数目在总体样本集中的比例要远小于其它其余图形, 因此在做十折交叉验证时很容易识别成其它图形 (在实际应用中由于训练集相对实验时较完整, 因此不会出现这种情况) , 但第二种采点方式的识别结果仍然要好于第一种, 并且一维离散快速傅里叶描述子对其余图形的识别正确率比较理想 (训练集中样本数据要尽量发布均匀, 不能相差太多) 。
5 总结与展望
图形轮廓拐点 (图形端点) 作为直接输入参数时, 保留图形轮廓端点的一维离散快速傅里叶变换识别结果更加理想, 更为稳定, 能够很好地保留局部特征值, 同时也为以后增加新特征描述子的处理提供了更完整的数据源 (例如采用局部特征描述) 。
但是, 由于当前处理方法要自己模拟原始轮廓点列的排列情况, 因此只能处理轮廓为直线段或规则圆弧的对象, 在后续处理工作中可以利用曲线拟合方法模拟不规则图形轮廓表示图像, 再进行取点识别。
另外, 由于直接输入数据是图形轮廓端点, 除轮廓特征外, 很难得到其它特征表示, 尤其是局部特征的处理。可以考虑用自增的轮廓点模拟以图像流作为直接输入的情形, 从而获取部分局部特征, 用混合特征进行图形识别, 能取得更好的实验效果[5]。
在决策机制上, 可以利用简单集成学习方法对预测结果进行决策处理, 从而避免噪声数据, 增强识别的鲁棒性[6,7]。
参考文献
[1]黄静.基于形状特征的人体行为识别方法研究[D], 燕山大学, 2010.10~11
[2]王涛, 刘文印, 孙家广, 张宏江.傅里叶描述子识别物体的形状.计算机研究与发展.2002年.第39卷.1714~1719
[3]Dengsheng Zhang and Guojun Lu.Studyand evaluation of different Fourier methods for image retrieval.Image and Vision Computing.2005, 23:33-49.
[4]张铮, 王艳平, 薛桂香.数字图像处理与机器视觉.第5版.北京市崇文区夕照寺街14号:人民邮电出版社, 2012
[5]郭利, 姬晓飞, 李平, 曹江涛.基于混合特征的人体动作识别改进算法.[J].计算机应用研究, 2013)
[6]杨长盛, 陶亮, 曹振田, 汪世义.基于成对差异性度量的选择性集成方法[J].模式识别与人工智能, 2010, 第四期, 565~571
快速傅里叶分析 篇6
传统的傅里叶变换(FFT)对平稳信号的处理效果很好,但当信号频率随时间变化时,FFT就显得有些力不从心了。分数阶傅里叶变换(Fractional Fourier Transform,FRFT)可以很好地弥补FFT的不足,特别是处理线性调频信号(LFM)时,能够得到令人满意的结果。
FRFT也称为角度傅里叶变换(AFT) 或者旋转傅里叶变换(RFT),其定义式为:
式中变换核取作:
则:
其中n为整数,即n∈Z。α=pπ/2称为分数阶Fourier变换的阶数,并有
(1) FRFT变换为线性算子;
(2) F0[x(t)]=F4[x(t)]=x(t)(恒等变换);
(3) F1[x(t)]=F5[x(t)]=X(ω)(标准Fourier变换);
(4) 广义Fourier变换算子为加性算子,即有Fp+q=FpFq。
2 采用分解方法计算FRFT的步骤
分数阶Fourier变换可以具体分解为以下三个主要的计算步骤:线性调频信号乘法;线性调频信号卷积;另一个线性调频信号乘法。假定p∈[-1,1],则我们可以将经过量纲归一化的信号f(x)的分数阶Fourier变换式(2)分解为以下三步运算:
和:
式中,α=pπ/2,β=csc α,而g(x)和g′(x)表示中间结果,并且:
即是说,分数阶Fourier变换的数值计算的顺序如下:先计算式(式(5)),再计算式(4),最后计算式(3)。下面是每一步计算的有关细节。
第一步:将函数f(x)与线性调频函数相乘(式(5))。注意,g(x)的频率带宽与时间带宽乘积可以是f(x)的相应带宽乘积的两倍,所以要求g(x)的采样间隔为1/(2Δx)。如果f(x)样本值的采样间隔是1/Δx,那么就需要对这些样本值进行插值,然后再与线性调频函数的离散采样值相乘,以得到所希望的g(x)的采样。
第二步:将g(x)与一线性调频函数作卷积式(式(4))。注意,由于g(x)是带限信号,所以线性调频函数也可以用其带限形式代替而不会有任何影响。也就是说,我们可以取:
式中:
这里:
是函数ejπβx2的Fourier变换。于是,式(7)的离散形式为:
这一离散卷积可以利用快速Fourier变换计算。
第三步:计算式(3)得到f(x)的分数阶Fourier变换fp(x)的采样值
(1) 原信号与一线性调频函数相乘;
(2) Fourier变换(其变元乘以尺度系数csc α);
(3) 再与一线性调频函数相乘;
(4) 乘以一复幅值因子。
3 对信号的FRFT处理及仿真图
首先要给出一个输入信号x,然后根据分解方法编出FRFT快速算法,根据不同的p值输入信号x会生成不同的曲线,其中p∈(0,4)。找出每个p值时FRFT的输出最大值点,组成一个一维数组m1,再从m1中找出一个最大值,该值所对应的p值就是FRFT变换的最佳角度α=pπ/2。
例1 假设输入信号为方波C=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ],长度N=73,在p=0~1之间进行FRFT变换,仿真结果如图1所示。
由图1(d)中可以看出当p=1时,α=π/2就是普通的傅里叶变换,这也验证了分数阶傅里叶变换的正确性。
例2 输入信号为多项式的线性调频信号fmpoly(N,p),x=exp(j*pi*(n-center)·^p/(N/2)^(p-1)/p),其中N为信号长度,p是信号的多项式幂,当p=2时该信号为chirp信号。取x=fmpoly(63,2)。
由图2可以看出,在图2(e)中p=1.5的时候,即α=3π/4时形成了一个冲击信号,说明了在此角度上信号的能量最好地集聚在一点上,由此可以识别出信号的调频系数,检测出信号的参数,这就是FRFT处理LFM信号的显著作用。
4 结 语
分数阶傅里叶变换是近二十年来发展起来的一种全新的信号时频分析工具,在很多方面得到了十分广泛的应用。而其快速算法的研究则对扩展其应用领域有着十分重要的意义。本文提出了一种有效并能准确计算FRFT 的新算法。该算法具有易实现、易理解、精度较高等优点,相信FRFT将会受到更广泛的重视,在信号处理领域会有良好的应用前景。
参考文献
[1]平先军,陶然,周思永,等.一种新的分数阶傅里叶变换快速算法[J].电子学报,2001,29(3):406-408.
[2]Lufs B Almeida.The Fractonal Fourier Transform andTime-Frequency Representations[J].IEEE Transactionson Signal Processing,1994,42(11).
快速傅里叶分析 篇7
关键词:图像复原,快速全变差去卷积 (FTVd) ,快速傅里叶变换
1、引言
图像在形成、传输和记录的过程中, 由于很多原因使图像的质量变坏。典型的图像复原是根据图像退化的先验知识建立退化模型, 以此模型为基础, 采用各种逆退化处理方法进行复原。不失一般性, 给出图像复原的线性退化模型:
其中, u∈Rn2为原始图像, f∈Rn2为退化图像, K∈Rn2×n2为模糊退化算子, η∈Rn2为随机噪声。求解图像复原问题的方法很多, 常用的即求解一个最小二乘问题:为了求解的方便加入相应的正则项, 由Rudin等[1]人提出的全变差模型:
针对全变差模型 (2) 的解决[2], 仿真结果表明, FTVd算法的图像复原效果比较好。
2、全变差图像复原
对于复原模型 (2) , 应用优化理论中的变量分离与惩罚方法, 引入新的辅助量来代替梯度项Du, 产生约束的凸最小问题的新方程:
上式中的第二项称为惩罚项, β为惩罚因子。
符号说明:记D (1) , D (2) 分别为水平和垂直方向的一阶有限差分算子, D (1) u∈Rn2与D (2) u∈Rn2分别表示对图像u的水平与垂直方向的有限差分。记w= (w 1;w) ∈R2n2, 其中w1, w2∈Rn2分别是对D (1) u, D (2) u的一个近似, 让wi= ( (w 1) i; (w2) i) ∈R2是对Di u=[ (D (1) u) i, (D (2) u) i]∈R2的近似。
先固定u, (3) 式前两项关于iw可以分离, 因此 (3) 式关于w的最小值相当于求解
再固定w, 而u在 (3) 式是二次的, 因此u的最小值可以通过法方程给出:
在周期边界条件下, u, (D (1) ) T D (1) , (D (2) ) TD (2) 和KT K都是块循环矩阵, 因此 (5) 式的左边可以通过二维离散傅里叶变换来对角化。根据傅里叶变换的卷积理论[3], (5) 式可变为:
其中F表示快速傅里叶变换, *表示共轭转置, o表示分量方式乘积。每次迭代只有1w和2w是常量, 其余都是变量, 这些变量确定后, 就可以很快的计算出u。综上所述, 基于全变差的FTVd复原算法步骤如下:
(1) 输入f, tol>0, λ>0
1) 保存之前的迭代:up=u
2) 固定u, 根据 (4) 式计算出w
3) 固定w, 根据 (6) 式计算出u
(4) 输出:u
3、仿真结果
所有的实验都是在MATLABr2010a环境下实现的。图1给出了运动模糊的情况: (1) 是大小为的原始图像, (2) 是根据模型 (1) 获得的256×256退化图像, SNR为7.2d B。模糊算子K是运动核函数, 随机噪声为高斯白噪声, 方差为10-7; (3) 是基于全变差的FTVd算法, 设定β的初值为1, 终值βmax=220, β的增长率为2, 内部循环迭代容许的误差tol=5.0×10-4;经过 (3) 复原后得到的图像SN R为22.19d B, CPU所用时间为0.5秒, 图像的质量显然得到了很大的提高。
4、总结
基于全变差的图像复原是现今图像复原的热点之一, 对于本文中的FTVd算法还有待于改进, 算法中要求不断地增加惩罚因子β的值, 随之问题的条件数就会变大, 会使得问题越难求解, 同时会带来数值不稳定问题。这些问题我们将在以后的工作解决。
参考文献
[1]L.Rudin and S.Osher.Nonlinear total variation based noise removal algorithms, PhysD, (1992) , pp.259-268.
[2]L.Rudin and S.Osher.Total variation based image restoration with free local constraints.Proc.1st IEEE ICIP, 1:31-35, 1994.
[3]C.Van Loan.Computational Frameworks for the Fast Fourier Transform, volume 10 of Frontier in Applied Mathematics.SIAM, 1992.
快速傅里叶分析 篇8
1 FFT 算法的选择
对于N点有限长序列x( n) ,DFT( discrete fourier transform) 傅里叶变换对应的公式对为[4]:
式中,x( n) 代表n点的DFT序列,WnNk为DFT的旋转因子。FFT是DFT( 离散傅里叶变换) 的快速算法,它是根据DFT的奇、偶、虚、实特性演变而成。
传统的FFT算法包括卷积FFT算法和分裂FFT算法,卷积FFT算法是将DFT序列转换为卷积计算。分裂基算法是把有限长序列的N点DFT分解为每个长度为r的短序列进行DFT计算。分裂基算法相对卷积算法在逻辑控制上更加简单,这在硬件实现上占有很大优势。
FFT分裂基算法的表达式为N = rm,称为基r的N点FFT运算,其中m为FFT的级数。可见基二与基四、基八相比,FFT的序列长度N更灵活。
比较常用的基二和基四FFT算法,基四FFT的蝶形运算量为基二FFT的1 /4,级数为基二的一半,并且基四FFT的运算速度要比基二FFT块。但是,基四每个蝶形运算需要用到了三个复数乘法,而基二只需要一个复数乘法,从占用的FPGA资源方面考虑,基二算法更加节省资源。不仅如此,由于基四算法的复杂度较高,在一定程度上增加了器件连线长度和布线难度,使得芯片的连线延迟较高。综合这些因素,选择基二算法进行FFT硬件处理较为合理[5]。
基二FFT按时域抽 取法 ( DIT) 的蝶形运 算公式[6]:
式中,Am,Bm对应前一级的两个复数点,Am +1,Bm +1对应后一级两个复数点,WkN为旋转因子,该值可以预先计算得到。时域抽取法( DIT) 是在时域上分解N点DFT序列,输入为位倒序,输出为顺序。由上述公式可知,一次蝶形运算用到了1个复数乘法和2个复数加法。
2 1024点FFT硬件实现
硬件实现一般有顺序结构、并行结构、流水结构以及级联结构。其中顺序结构蝶形运算资源占用最少但速度最慢,并行结构最快但占用资源最大,流水结构虽然处理速度快但所占用资源仍然较大,而级联结构在资源占用与速度比例相对均衡。本文采用级联结构实现1024点FFT运算。
FFT的设计由时序控制单元,蝶形运算单元,地址管理单元,旋转因子存储单元及两组memory组成,如图1所示。
2. 1 旋转因子的产生与存储
旋转因子,既是X( k) 对x( n) 的离散傅里叶变换在频率处的采样值,也是Z平面单位圆上幅角在Z平面N等份后的第k点的值[7]。
因此,旋转因子 可以表示 为:这里N为当前计算的点长度。第一级的旋转因子为W01024,W11024;第二级的旋转因子为W01024,W11024,W21024,W31024; 第九级的旋转因子为W01024,W11024,…,W11002234。这些旋转因子一一对应于Z变换域单位圆上,且各级旋转因子复用了前一级的旋转因子并使用了新的旋转因子,因此仅需存储第九级1 024个旋转因子即可。
将第九级产生的1,2,3,4象限的旋转因子的虚部实部分别存储到ROM中。而由上图可知,根据Z平面单位圆的对称性,第1、2、3、4象限的幅值是一样的,仅相位不同。第一象限的旋转因子分解到坐标轴后与其他象限分解后的值仅存在正负性差别,因此设计时,只需要存储第一象限的旋转因子即256个旋转因子即可,其他象限的旋转因子可通过对称性得到,进而节省所需的硬件资源。
2. 2 蝶形运算单元
蝶形运算是FFT运算的重要单元,该单元包括了乘法器电路,加法器,移位寄存器,饱和处理。如式( 3) 、式( 4) 所示,蝶形运算中需要将复数数据与旋转因子做复数乘法,及与其他数据加、减等运算。其中一次复数乘法如公式( 5) 所示,两组复数 ( A +Bj) 和 ( C + Dj) 相乘,包括4次实数乘法。而在式( 6) 、式( 7) 中对复数乘法做了优化[8]。
这种优化方式,使得原有的4次实数乘法转变为3次实数乘法,1次实数加法及2次实数减法。
硬件实现这种算法,只需提前知道C与D的值,得到C - D ,C + D即可。可以将上述公式的A,B对应蝶形运算输入数据的实部与虚部,C,D对应为旋转因子的实部与虚部,而由于FFT的旋转因子已知,即可通过查表的方式直接读出旋转因子的值并做加减运算,以式( 6) 、式( 7) 的方法完成蝶形运算复数乘法,节约乘法器资源。
本文对FFT数据采用定点化处理,定点化处理的优点在于实现简单,不需要额外的硬件资源。当单个蝶形运算单元的输入为N位时,输出最多为N + 2位,本文为了简化处理,将输入输出数据位宽都定为N + 2位。本文对每一级结果进行溢出判断,处理过程中对乘法结果进行了四舍五入,这样减小了截断误差。
2. 3 memory 存储单元
1 024点的FFT采用基二算法结构,需要10级FFT处理。本文采用8块256×28的双口RAM处理每级间数据,每4块RAM合成一组大小为1 024×28的memory,共合成两组,其中一组用于存储第0,2,4,6,8级的数据结果,另一组用于存储第1,3,5,7,9级的数据结果,以形成乒乓结构。如图2所示。
每一级的蝶形运算需要从对应的memory中的4块RAM里分别读取两个数据与旋转因子进行运算,每次并行处理八个数据,即4组蝶形运算,并在一个周期内完成,完成后将这8个点的结果写到另一组memory中,这样在128个周期后1 024个点都运算结束,如此往复,十级蝶形运算后,结束FFT。
2. 4 时序控制单元
时序控制单元包括状态机处理、数据控制逻辑。其中状态机主要处理每级蝶形运算间的状态跳转;数据控制逻辑主要负责memory数据读写控制以及不同memory间的乒乓操作控制。
由图3可知,第0级并行处理四个蝶形运算,每个蝶形运算单元处理同一块RAM里相邻地址的两个数据;
第1级的每个蝶形运算单元处理同一块RAM里间隔1个地址的两个数据;
第2级的每个蝶形运算单元处理同一块RAM里间隔3个地址的两个数据;
以此类推,第N( N < 8) 级时,则处理同一块RAM里间隔 ( 2N- 1) 个地址的两个数据;
当N≥8时,读取数据已超过了RAM的深度256,因此不能按照上述方法去处理。
当N = 8时,根据图3所示,从ram0和ram1的两个相同地址分别取两个数据,然后使用不同RAM但地址相同的两个数进行蝶形运算,ram2和ram3也按照此方式进行运算。
当N = 9时,从ram0和ram2的两个相同地址分别取两个数据,然后使用不同RAM但地址相同的两个数进行蝶形运算,ram1和ram3也按照此方式进行运算。
2. 5 地址生成单元
地址生成单元主要完成RAM的读写地址以及ROM的地址生成。地址生成单元包括计数器,截位拼接单元,块计数器,输出单元。计数器计算每一级所用周期数,每一级都为128 + 4个周期; 截位拼接单元用于通过计数器生成读取旋转因子的地址及读取memory的地址; 块计数器计算总共FFT的级数,范围为0 ~ 9。
需要注意的是,由于ROM中仅存有四分之一的旋转因子,因此需要根据需求对ROM中读出的旋转因子的值进行正负变换以得到符合要求的旋转因子。
3 时序仿真及结果
本文在ASIC下进行FFT的仿真及综合。将双口RAM及蝶形运算单元例化在FFT模块的测试代码中,双口RAM需要例化8块,进行ASIC仿真。以下两幅图为FFT仿真图。
先将输入数据写进memory2中,启动FFT的start信号,进行两组memory乒乓操作,图4( a) 即为FFT仿真结果。如图4( a) 所示,m从0级累计到9级,表示FFT内部控制memory数据读写的过程。
ASIC中的仿真结果显示,FFT每一级处理蝶形运算用到128个周期,则十级需要的时间是1 280周期,加上时序控制的状态转移30个周期,一共用1 310个周期。
ASIC的综合结果显示,整个FFT实现仅占用5万门资源。
本文用Xilinx公司的Virtex-7系列芯片做FFT的FPGA原型验证。Xilinx公司7系列的芯片工艺为28 nm,降低其成本和功耗,同时提高了FPGA的性能和容量。它通过整合6-LUT并与ARM公司合作规范AMBA总线,大幅提高芯片灵活性和片上系统性能。1024点的FFT数据,由于FPGA调试包括了DSP的控制,时钟频率仅开到50 MHz,仿真时间约为26. 2μs。如果在只有FFT硬件模块而没有DSP控制,时钟频率可以达到200 MHz,仿真时间仅有6. 55μs。
最后在matlab中做RTL硬件实现的误差分析。图5( b) 所示,real_error及image_error两个曲线为matlab结果与FPGA的仿真结果对应实部虚部的相对误差曲线,曲线在0附近波动,误差最大为5×10- 3,基本符合理论要求。图5( b) 中的matlab_real与dut_real曲线图分别对应matlab的FFT实部结果和RTL的FFT的实部结果,两条曲线基本一致,进一步说明RTL设计结果符合理论要求。
4 结论
通过对FFT一般算法的研究对比,提出了基2算法时域抽取法处理1 024点FFT的设计方案。通过了ASIC仿真、综合及FPGA的原型验证。该设计具有如下特点:
1) 四个蝶形运算并行处理,一个周期完成一次蝶形运算。
2) 用8块深度为256的双口memory读写FFT数据,并行8点处理FFT内部数据,共用1 320个周期。
3) 通过ASIC综合,硬件占用资源仅为5万门。
4) 用Xilinx的FPGA仿真测试,在50 MHz时钟频率下,需要时间为26. 4μs。
该FFT硬件实现是全RTL实现,已经通过前仿后仿及综合,可以作为IP核直接运用到实际工程中。
参考文献
[1] 解翀.基于FPGA的高速FFT处理器的研究.南京:南京航空航天大学,2010Xie C.Research on a high speed FFT processor with FPGA.Nanjing:Nanjing University of Aeronautics and Astronautics,2010
[2] 赵国亮.基于FPGA的1024点流水线结构FFT的算法研究与实现.西安:西安电子科技大学,2011Zhao G L.Research and implementation of 1024-point pipeline FFT algorithm based on FPGA.Xi’an:Xidian University,2011
[3] 李雪.基于FPGA的FFT处理器的设计与优化.哈尔滨:哈尔滨工业大学,2008Li X.The design and optimization of FFT processor on FPGA.Harbin:Harbin Institute of Technology,2008
[4] 谢彦林.可变点流水线结构FFT处理器的设计及FPGA实现.西安:西安电子科技大学,2007Xie Y L.The design of variable point pipeline FFT and implementation based on FPGA.Xi’an:Xidian University,2007
[5] 李小进,初建朋,赖宗声,等.高速基2FFT处理器的结构设计与FPGA实现.电路与系统学报,2005;10(5):49—53Li X J,Chu J P,Lai Z S,et al.FPGA implementation of a highspeed base-2 256-point FFT.Journal of Circuits and Systems(Natural Science),2005;10(5):49—53
[6] 王远模,赵宏钟,张军,等.用FPGA实现浮点FFT处理器的研究.国防科技大学学报,2004;26(6):61—64Wang Y M,Zhao H Z,Zhang J,et al.Realization of Floating-point FFT Processor with FPGA chip.Journal of National University of Defense Technology,2004;26(6):61—64
[7] 何方白,张德明,杨莉,等.数字信号处理.北京:高等教育出版社,2009:83—92He F B,Zhang D M,Yang L,et al.Digital signal processing.Beijing:Higher Education Press,2009:83—92
快速傅里叶分析 篇9
心脏病一直是威胁人类生命健康的主要疾病之一, 如何有效地检测与评价心脏的功能状况, 对心脏病进行准确的预报和诊断是目前治疗心脏病的一个重要研究课题。采用心电图对心脏活动进行检测分析一直是医学临床实践中心脏功能检测和诊断的重要手法和手段。
目前, 心电信号的处理方法是:首先对心电信号滤波, 去噪, 然后采用一定准则确定域值, 检测出所需信号信息。这种处理方法不仅操作繁琐, 而且运算速度慢效率低不利于临床诊断。本设计采用MATLAB指令对心电信号进行分析处理, 切割出心电信号的各个子波 (QRS波、T波) , 对其进行时域波形的观察和频域的谱分析。方便、快捷, 能够更快速、准确地确定病情, 利于医疗诊断。
MIT-BIH是由美国麻省理工学院提供的研究心律失常的数据库。目前国际上公认的标准心电数据库之一。采用212格式存储心电数据[1,2,3]。
一、傅里叶变换
傅里叶变换建立了信号频谱的概念。所谓傅里叶分析即分析信号的频谱 (频率构成) 、频带宽度等。对心电信号的分析也不例外, 也必须采用傅里叶变换这一工具[4]。
对于连续时间信号f (t) , 其傅里叶变换为:
连续时间傅里叶变换特别适合于对时间连续信号的理论分析 (如信号与系统课程中的内容) , 但是, 由于其变换两边的函数f (t) 和都是连续函数, 不适合于计算机处理。工程应用中经常需要对抽样数据进行傅里叶分析, 这种情况下往往无法得到信号的解析表达式, 因而必须采用傅里叶变换的数值计算方法。下面介绍傅里叶变换的数值方法。
如果f (t) 的主要取值区间为[t1, t2], 定义T=t2-t1为区间长度。在该区间内抽样N个点, 抽样间隔为则有:
上式可以计算出任意频点的傅里叶变换值, 假设F (ω) 的主要取值区间位于[ω1, ω2], 要计算其间均匀抽样的k个值, 则有:
二、心电信号频谱分析
通过对信号的时域分析, 可以掌握信号幅值对应的时间, 同一形状的波形重复出现的周期长短, 信号波形本身变化的速率 (如脉冲信号的脉冲持续时间及脉冲上升和下降边沿陡直的程度) 。
对信号的频域分析也称为频谱分析, 是对信号在频率域内进行分析。分析的结果是以频率为坐标的各种物理量的谱线和曲线, 可得到各种幅值谱、相位谱、功率谱和各种谱密度等[6]。
时域分析与频域分析是对模拟信号的两个观察面。时域分析是以时间轴为坐标表示动态信号的关系;频域分析是把信号变为以频率轴为坐标表示出来。一般来说, 时域的表示较为形象与直观, 频域分析则更为简练, 剖析问题更为深刻和方便。通过观察心电信号的时域与频域波形图就能直观的看出该心电信号产生者的一些身体状况, 也可以观测出患者各种心律失常、心室心房肥大、心肌梗死、心率异常、心肌缺血、电解质紊乱、心衰等症[7]。
三、实验结果
标准正常的心电图波形是由P、Q、R、S、T、U波及P-R期间、S-T期间、Q-T期间等组成。如图1所示。
本文以美国麻省理工学院提供的MIT-BIH数据库中的800心电信号为例进行分析。对MIT-BIH心电数据库中的800号信号进行切割并进行傅里叶变换, 可以得到QRS波与T波, 通过傅里叶变换可以得到QRS波与T波的频谱, 如图2所示。
通过截取出各个波段的波形, 可以直观的分析心电信号各部分负载的信息, 免去了一些不必要的麻烦。观察频谱图就可观察出变换的趋势, 通过对各部分波形的分析, 就能了解到心脏的部分信息, 从而做到掌握身体状况的目的。
四、结论
研究分析心电信号作为人身体状况的最直接体现, 具有很大的社会价值和医疗价值。本文利用的最简单易懂的方法分析出了心电信号这一繁琐杂乱的波形, 并作出分析处理, 为进一步的观测处理做好了铺垫。本文分析了MIT-BIH数据库中的一例心电数据, 但是其他数据都可以此方法类推, 分析不同心电信号的频谱, 频域时域的波形, 或做波形的提取等工作。该方法可以作为心电信号处理方面的基础, 为更深一步的研究提供广阔的空间。
参考文献
[1]王俊, 马千里.基于多尺度熵的心电图ST段研究[J].南京邮电大学学报, 2008, 28 (3) :70-76.
[2]李敏, 陈兴文.信号分析与处理的软硬件实现[M].大连:大连海事大学出版, 2009.