通过短时倒谱(Cepstrogram)计算进行时-倒频分析研究(Matlab代码实现)

简介: 通过短时倒谱(Cepstrogram)计算进行时-倒频分析研究(Matlab代码实现)

      💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

    或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

1. 短时倒谱(Cepstrogram)的定义与数学基础

1.1 核心定义

短时倒谱(Cepstrogram)是短时傅里叶变换(STFT)与倒谱分析(Cepstrum)的结合,用于分析信号在时间-倒频域的联合特征。其定义为:

  • 倒谱(Cepstrum):信号功率谱对数的傅里叶逆变换(IDFT),数学表达式为:

c image.gif 编辑

  • 短时倒谱:通过对信号分帧加窗,计算每帧的倒谱,形成时间相关的倒谱序列:

image.gif 编辑

  • Cepstrogram:将短时倒谱的幅度按时间 n^n^ 和倒频率 mm 绘制的二维图像,直观展示信号时-倒频特征。

1.2 关键概念解析

  • 倒频率(Quefrency)
    倒谱的横坐标,单位为时间(ms),反映信号中的周期性结构。高倒频率对应频谱快速波动(如高频噪声),低倒频率对应缓慢波动(如基频和谐波)。
  • 复倒谱(Complex Cepstrum)
    保留对数功率谱的复数相位信息,但处理复杂(相位可能超出 (−π,π)(−π,π) 范围),实际中多使用实倒谱。
  • 物理意义
    倒谱分离信号中的激励源(如声带振动、机械冲击)和传递系统(如声道、机械结构)。例如语音信号中,低倒频区反映声道特性,高倒频区反映基音周期。

2. 时-倒频分析的原理与必要性

2.1 时-倒频分析 vs. 传统时频分析

  • 传统时频分析(如STFT、小波变换):
    在时间-频率域表示信号,适用于非平稳信号(如语音、振动信号),但无法分离卷积混合的源与系统。
  • 时-倒频分析: 通过倒谱将频域周期性转化为倒频域脉冲,直接分离激励与系统响应。例如:
  • 语音中分离声道(低倒频)和声带振动(高倒频);
  • 故障诊断中提取轴承损伤的周期性冲击。

2.2 优势与适用场景

场景 问题 时-倒频分析的解决方案
语音处理 共振峰靠拢导致分辨率不足 倒谱分离声道与激励,精确提取共振峰
机械故障诊断 背景噪声掩盖周期性冲击 对数变换增强弱冲击,倒频域凸显周期
地震信号分析 地层反射波与噪声耦合 倒谱剔除多次反射,保留有效波

3. 短时倒谱的计算流程(算法实现)

3.1 核心步骤

  1. 信号分帧与加窗
  • 输入信号 x(t) 分成长度为 N 的帧,帧移 H(跳跃长度)。
  • 加窗(如Hamming窗)减少频谱泄露:
win = hamming(wlen, 'periodic');  %
  • image.gif
  1. image.gif 编辑

3.2 关键参数设计

  • 窗长选择
    长窗提高频率分辨率(适合稳态信号),短窗提高时间分辨率(适合瞬变信号)。
  • 倒频域截断
    低倒频区(<1ms)保留系统响应,高倒频区(>5ms)提取周期性冲击。

4. 应用案例与领域实践

4.1 语音信号处理

  • 基音检测
    倒谱峰值对应基音周期(如男性基音约5ms,女性约3ms)。
  • 声道估计
    低倒频系数重建声道传递函数,用于语音合成与识别。

4.2 机械故障诊断

  • 轴承故障检测
    损伤点周期性冲击在倒频域表现为峰值(如轴承故障周期10ms),强于传统频谱。
  • 齿轮箱故障
    倒谱分离齿轮啮合频率与调制边带,定位磨损齿轮。

4.3 地震信号分析

  • 地层结构成像
    倒谱剔除地震波多次反射,保留一次反射波,提高地层分辨率。

5. 与其他时频分析方法的对比

方法 优势 局限性 与Cepstrogram的关联
STFT 计算简单,实时性强 海森堡测不准原理限制时频分辨率 Cepstrogram的基础步骤
小波变换 多尺度分析,适合瞬态信号 基函数选择依赖经验 可替代STFT作为倒谱输入
Wigner-Ville 高时频分辨率 交叉项干扰多分量信号分析 需配合倒谱抑制交叉项
Cepstrogram 分离激励与系统,增强周期性 对噪声敏感,需预滤波

典型组合应用

  • STFT + 倒谱:滚动轴承故障诊断中,先用STFT得时频谱,再对每帧功率谱作倒谱分析提取冲击周期。
  • 小波变换 + 倒谱:肌电信号分析中,小波分解后对子带信号计算倒谱,提高特征可分性。

6. 工具实现与软件支持

6.1 编程实现(Matlab示例)

% 输入信号x,采样率fs
[C, q, t] = cepstrogram(x, win, hop, fs);  % 核心函数[[18]]
% 可视化
imagesc(t, q, abs(C));
xlabel('Time (s)'); ylabel('Quefrency (ms)');

image.gif

  • 工具包推荐
  • MATLAB时频工具箱(tftb):支持STFT、Cepstrogram。
  • Python库librosa:提供cepstrogram接口。

6.2 工程注意事项

  • 噪声抑制:对数变换放大低频噪声,需预滤波或加权处理。
  • 实时性优化:FFT加速IDFT计算,窗长按信号特性自适应调整。

7. 研究挑战与前沿方向

  1. 交叉项干扰
    多分量信号在倒频域产生虚假峰值,需设计核函数抑制(如自适应核时频分布)。
  2. 非线性信号处理
    希尔伯特-黄变换(HHT)与倒谱结合,处理非平稳信号。
  3. 深度学习融合
    用CNN从Cepstrogram中自动学习特征,提升故障分类精度(如轴承故障诊断)。

结论

短时倒谱(Cepstrogram)通过将时频分析(STFT)与倒谱变换结合,在倒频域实现了激励源与传递系统的分离,显著提升了周期性特征的提取能力。其在语音处理、机械故障诊断、地震信号分析等领域的成功应用,验证了其解决复杂非平稳信号问题的有效性。未来研究需进一步优化抗噪性、实时性及非线性适应能力,并结合深度学习挖掘高维特征潜力。

📚2 运行结果

image.gif 编辑

image.gif 编辑

部分代码:

% load a sound file

[x, fs] = audioread('sample2.wav'); % load an audio file

x = x(:, 1);                        % get the first channel

x = x/max(abs(x));                  % normalize the signal

N = length(x);                      % signal length

t1 = (0:N-1)/fs;                    % time vector

% define the analysis parameters

wlen = 1024;                        % window length (recomended to be power of 2)

hop = 256;                          % hop size (recomended to be power of 2)

% calculate the cepstrogram

win = hamming(wlen, 'periodic');

[C, q, t2] = cepstrogram(x, win, hop, fs);

% some conditioning

C = C(q > 0.5e-3, :);               % ignore all cepstrum coefficients for

                                   % quefrencies bellow 0.5 ms  

q = q(q > 0.5e-3);                  % ignore all quefrencies bellow 0.5 ms

q = q*1000;                         % convert the quefrency to ms

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1] 应怀樵.最大熵法新倒频谱分析——倒熵谱研究[J].力学学报, 1985, 17(5).DOI:10.6052/0459-1879-1985-5-1985-062.

[2] 应怀樵.最大熵法新倒频谱分析—倒熵谱研究[C]//中国电子学会信号处理、振动噪声控制在工程中的应用第二届学术会议.1985.

[3] 陈侃,傅攀,谢辉.倒频谱分析在滚动轴承故障监测中的运用[J].四川兵工学报

相关文章
|
9天前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
|
9天前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
91 14
|
9天前
|
机器学习/深度学习 算法
【概率Copula分类器】实现d维阿基米德Copula相关的函数、HACs相关的函数研究(Matlab代码实现)
【概率Copula分类器】实现d维阿基米德Copula相关的函数、HACs相关的函数研究(Matlab代码实现)
|
10天前
|
算法 计算机视觉
【MPDR & SMI】失配广义夹角随输入信噪比变化趋势、输出信干噪比随输入信噪比变化趋势研究(Matlab代码实现)
【MPDR & SMI】失配广义夹角随输入信噪比变化趋势、输出信干噪比随输入信噪比变化趋势研究(Matlab代码实现)
|
10天前
|
编解码 人工智能 算法
【采用BPSK或GMSK的Turbo码】MSK、GMSK调制二比特差分解调、turbo+BPSK、turbo+GMSK研究(Matlab代码实现)
【采用BPSK或GMSK的Turbo码】MSK、GMSK调制二比特差分解调、turbo+BPSK、turbo+GMSK研究(Matlab代码实现)
|
10天前
|
机器学习/深度学习 编解码 并行计算
【改进引导滤波器】各向异性引导滤波器,利用加权平均来实现最大扩散,同时保持图像中的强边缘,实现强各向异性滤波,同时保持原始引导滤波器的低低计算成本(Matlab代码实现)
【改进引导滤波器】各向异性引导滤波器,利用加权平均来实现最大扩散,同时保持图像中的强边缘,实现强各向异性滤波,同时保持原始引导滤波器的低低计算成本(Matlab代码实现)
|
10天前
|
机器学习/深度学习 传感器 边缘计算
【故障诊断】基于时滞反馈随机共振的增强型旋转电机故障诊断(Matlab代码实现)
【故障诊断】基于时滞反馈随机共振的增强型旋转电机故障诊断(Matlab代码实现)
|
10天前
|
传感器 机器学习/深度学习 算法
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
【UASNs、AUV】无人机自主水下传感网络中遗传算法的路径规划问题研究(Matlab代码实现)
|
10天前
|
运维 算法
【故障诊断】基于最小熵反卷积、最大相关峰度反卷积和最大二阶环平稳盲反卷积等盲反卷积方法在机械故障诊断中的应用研究(Matlab代码实现)
【故障诊断】基于最小熵反卷积、最大相关峰度反卷积和最大二阶环平稳盲反卷积等盲反卷积方法在机械故障诊断中的应用研究(Matlab代码实现)
|
9天前
|
机器学习/深度学习 传感器 算法
【裂纹检测】检测和标记图片中的裂缝(Matlab代码实现)
【裂纹检测】检测和标记图片中的裂缝(Matlab代码实现)

热门文章

最新文章