告别固定频带划分:基于阶统计滤波的自适应频域分解方法(Python)
做振动信号分析时,频带怎么划?等宽?倍频程?还是凭经验拍?
提出一种数据驱动的自适应频带分割策略:先用阶统计滤波从频谱中提取稳健的包络,再根据包络的峰谷形态自动确定频带边界。整个过程只需设定划分子带数,不需要任何先验频率知识,分解出的分量物理意义清晰。在仿真信号上验证,各分量与原信号对应成分的相关系数较高。
01 问题:频带划分的“拍脑袋”困境
旋转机械故障诊断中,频域分解是基础操作。无论是经验模态分解的改进变体,还是小波包、变分模态分解,大多数方法都对频带划分方式敏感。
常见做法有三种:等宽划分(忽略了信号频谱的实际分布)、倍频程划分(机械但未必匹配故障特征频率)、根据经验公式指定边界(换设备就要重新调)。这些方法的共性是强依赖人工设定,缺乏对信号自身频谱结构的自适应能力。
能否让频谱自己“告诉”我们边界在哪里?
02 核心方法:OSF包络 + 峰谷边界
第一步:阶统计滤波提取频谱包络
对信号的傅里叶幅值谱,用一个滑动窗口进行最大值滤波(阶统计滤波的一种)。与传统的中值滤波或均值平滑不同,最大值滤波能够更好地保留频谱中的峰值结构,同时滤除细小的毛刺噪声。窗口宽度通常取3~9个点,计算量极低。
第二步:平滑与峰谷检测
包络经过一次短窗卷积平滑后,利用局部极大值定位显著谱峰。在相邻主峰之间搜索最小值点,作为频带分割的边界。边界数量由预设的子带数确定,但边界具体位置完全由频谱形态决定。
第三步:频域掩码与逆变换重构
按边界对FFT谱进行硬掩码(带通),每个子带单独做逆FFT,得到对应的时域分量。由于只在频域做乘积,重构分量与原信号严格相位对齐,无时移畸变。
整套方法仅需设置三个参数:子带数量、OSF窗口宽度(默认5)、平滑窗口长度(默认15)。后两个参数对结果不敏感,在不同数据集上可复用。
03 仿真验证:相关系数检验分解质量
为验证提出方法的有效性,构建了一个包含4个分量的模拟信号:调幅-调频分量、线性调频分量、非线性调幅-调频分量和单频正弦分量,叠加后总时长1秒,采样率5kHz。
分解后,将输出分量与真实分量按相关系数最大原则一一匹配。结果如下(OSF窗口=5,平滑窗口=15):
-
分量1:相关系数 > 0.99
-
分量2:相关系数 > 0.99
-
分量3:相关系数 > 0.98
-
分量4:相关系数 > 0.99
所有分量的能量误差均在10⁻³量级以下。时域波形对比图显示,重构分量与真实分量几乎完全重合。





如果你对信号滤波/降噪,机器学习/深度学习,时间序列预分析/预测,设备故障诊断/缺陷检测/异常检测有疑问,或者需要论文思路上的建议,欢迎学术咨询
工学博士,《MSSP》《中国电机工程学报》《宇航学报》《控制与决策》等期刊审稿专家,擅长领域:信号滤波/降噪,机器学习/深度学习,时间序列预分析/预测,设备故障诊断/缺陷检测/异常检测
更多推荐


所有评论(0)