FFT特征提取算法
来自网络
滚动轴承故障诊断频域特征识别,关键在于转换为频域的实时性是否满足系统实时的工作需要,FFT变换是将时域信号转换为频域的有效方法。
FFT具有快速实时,物理关系明确的优点,能以较低的成本得到性能满足要求的系统,所以本课题讨论的故障诊断频域特征识别仍采用FFT变换。
TI公司的DSP有许多适应实时数字信号处理的特点,具有哈佛总线结构、片内缓存技术、流水线结构、特殊的寻址方式、高效的特殊指令以及硬件乘法器、位反转桶形位移器等硬件,因此数据运算速度很快,通常1024点的FFT在毫秒级之内(以所选用的DSP和系统时钟而有别),因此用DSP实现FFT,实时性可以充分满足系统要求。
FFT在DSP处理器实现中采用的是按时间抽取的基2算法。
一般情况下,假定FFT程序的输入序列为复数,而在本课题应用背景中待处理序列为实数值,可以采用对称特性有效地计算FFT。
在此情况下,可以将原来的N点实数序列压缩为一个N/2点的复数序列。
对此压缩复数序列执行N/2点FFT,将得到的N/2点复数输出展开为N点复序列,它与原来N点实数输入信号的FFT相对应。
做完FFT变换后,要识别故障特征,还要对变换后的数据序列进行求模,从而判断出故障特征的幅度和频率信息。
所以FFT变换的流程如图5.6所示。
C5402的DSPLIB库提供了一套全面优化的用于实数和复数FFT的函数和一个位反转例程(cbrev)。
实数FFT函数rfft是一个宏,其如下调用Cfft和cbrev: #definerfft(x,nx,type)
{ Cfft_##type(x,nx/2);
Cbrev(x,x,nx/2);
unpack(x,nx);
}
FFT变换程序不仅要调用DSPL工B中的cfft--SCALE函数,而且还要对变换完后的数据进行位翻转和数据打包,所以分别调用了库中的cbrev和unPack函数,最后还要对输出数据进行求模来判断幅度和频率等参数。