倒谱分析与倒谱求法



    倒谱分析可检测频谱中的重复模式,使其对区分多个故障非常有用,该故障在不同的主要频谱(即FFT、阶次、包络和增强频谱)中很难看到。
    最重要的行业应用与机械诊断相关,如齿轮箱分析,以及其他应用,如:
1 回声检测和去除
2 以及语音分析
    在以下网站中:
http://www.bksv.cn/Products/analysis-software/signal-analysis/cepstrum-analysis
    使用倒谱做如下用途:
1 机器诊断--监测齿轮箱和滚动轴承振动
2 齿轮箱测试--早期检测齿轮故障
3 轴承故障检测
4 回声检测和去除
5 语音分析
    该网站中,提到的倒谱功能还有
1 识别出故障的齿轮和滚动轴承
2 检测重复模式
3 检测周期性及其频率间隔
4 分离谐波系
    倒频谱是频谱对数的快速傅立叶变换。因此,它是一个频谱的频谱,其特性使其在许多类型的信号分析中非常有用。
    其更加强大的特性之一是,频谱中的任何周期或重复模式将被识别为倒频谱中的一个或两个特定分量。
    如果频谱中包含几个边带集或谐波系,它可能会因为重叠而出现混乱。但是在倒频谱中,它们将以类似于频谱分离波形中周期信号的方式被分离。对于齿轮箱和轴承振动,倒谱分析是很好的选择。

语音分析
    倒频谱分析是检测频谱周期性的工具,主要用于语音分析以确定音调和相关问题。这里,频谱中的周期性由基本语音频率的许多谐波给定。倒频谱分析还可检测到的另一种周期性类型均匀分布在一个多个载波频率周围的边带。



倒频谱定义为对数功率谱的功率谱(即,dB幅度形式),从而与自相关函数相关,这可通过线性坐标的功率谱的逆傅里叶变换获取。在某些情况下,可通过两种不同的方式解释使用倒频谱而不是自相关函数的优势。在边带中,这意味着凭借对数变换,更多权重被分配给低级值成分,这在主要需要确认周期性的存在时非常有利,同时可精确确定其频率间隔。在语音分析等其他应用中,该优势在于频谱的倍增关系(例如,通过传递函数)在经过对数运算后更加显著,同时进一步的傅里叶变换也保持该递增效应,从而消除可能出现的卷积(或“拖尾效应”)。


在维基百科中对倒频谱的解释:
https://zh.wikipedia.org/wiki/%E5%80%92%E9%A0%BB%E8%AD%9C

倒谱的一般求法是,首先求取fft,然后取log对数,再进行逆傅立叶变换

    又见书本,语音信号处理,第89页,倒谱法,对于倒谱图(具体参考书本中的图),靠近原点的低频部分是频谱包络的变换,而位于t0处的窄峰为谐波峰值的变换,表示基音。基音峰值的变换与频谱包络之间的间隔总是足够大,从而能够对前者很容易的识别。


//倒谱的求法

//1 求FFT
if (!m_fft.DoFft(m_fftdata, FFT_LENGTH, false))
{
 return -1;
}
//2 求能量谱
for(int i=0;i {
    data_sample[i]=1+(sqrt(m_fftdata[i].real()*m_fftdata[i].real()+m_fftdata[i].imag()*m_fftdata[i].imag()));
}


complex ifftdata[FFT_LENGTH];
//将对数能量作为复信号的实数部分
for(int i=0;i {
    ifftdata[i].real(log((float)10.0*data_sample[i]));
 ifftdata[i].imag(0);
}

//3 求逆傅立叶变换
if (!m_fft.DoFft(ifftdata, FFT_LENGTH, true))
{
 return -1;
}

int i_fft_power[FFT_LENGTH];

//求逆傅立叶变换的能量谱
for (int i=0;i {
 i_fft_power[i] = 100*sqrt(ifftdata[i].real()*ifftdata[i].real()+ifftdata[i].imag()*ifftdata[i].imag());
}

你可能感兴趣的:(声音处理(audio,processing),信号与系统)