让频谱包络自己划定边界:基于顺序统计滤波的自适应傅里叶分解方法(Python)
非平稳信号的自适应分解,小波和EMD、VMD是主流,但是模态混叠和端点效应始终困扰着这些方法,有没有一种更简洁、物理意义更清晰的方案?
提出一种顺序统计滤波傅里叶分解方法,直接对信号频谱进行滑动最大值包络提取,再根据包络上的峰值自适应划分频带,最后通过各频带的逆傅里叶变换重构出时域单分量,整个过程不需要基函数选择,无迭代筛选。
01 思路:用包络来看清频谱结构
傅里叶变换将信号映射到频域,但是直接观察幅度谱很难自动判别各频率成分的归属——尤其是当频谱存在大量毛刺和噪声时,局部峰值密布,哪些才对应真正的模态?
提出方法的解答非常直接:先给频谱画一条光滑的上包络线,再让包络线自己说话。
具体操作分三步。首先,对信号的幅度谱实施滑动窗口最大值滤波——每个窗口内只保留最大值,相当于提取频谱的局部上包络。接着,用移动平均对包络进一步平滑,消除残余抖动。最后,在平滑包络上检测显著峰值,以相邻峰值之间的最低点为边界,将整个频带切割为若干子带。
这三步的本质是将频谱的精细结构粗粒化,只保留主要能量峰的核心信息,从而实现了自适应频带划分——包络的形态完全由数据自身决定,无需人工预设分割点。
02 方法详解:从频谱包络到时域分量
顺序统计滤波和最优窗宽
滑动最大值滤波的窗宽是决定包络粗细的关键。窗宽过小,包络仍残留毛刺;窗宽过大,会模糊掉弱峰。可以采用一种自动寻优策略:在一定范围内搜索窗宽,计算不同窗宽下包络曲线的峰度,选择使峰度最大的窗宽作为最优值。峰度越大,意味着包络的峰值越突出、谷底越平坦——这正是理想频带分割所需的特征。
峰值检测与边界生成
在平滑后的包络上,先用导数条件找出所有局部极大值,再通过相对幅度阈值过滤掉噪声引起的小峰。剩余候选峰按幅度降序排列,依次选取预设数量的峰值,同时确保相邻峰值之间的频率间隔不小于最小距离。这样既能捕获主要模态的频域位置,又避免了在单一谱峰附近反复分割。
边界确定法则:以选中的峰值为锚点,在相邻两峰之间的频率区间内寻找幅度最低的位置作为分割线。这种方式保证了边界落在能量低谷处,使得各子带内部的频率成分尽可能集中,带间串扰最小。首尾边界固定为0 Hz和奈奎斯特频率。
频域滤波与时域重构
得到边界频率后,构造对应的矩形带通滤波器,对原始傅里叶系数进行掩膜滤波,保留子带内的频谱分量,其余置零。对每个子带的系数执行逆傅里叶变换,即得到该频带对应的时域单分量信号——称为傅里叶固有模态函数。这些分量叠加可直接重构原始信号,分解过程没有任何信息丢失。



参考
让频谱包络自己划定边界:基于顺序统计滤波的自适应傅里叶分解方法(Python)
如果你对信号滤波/降噪,机器学习/深度学习,时间序列预分析/预测,设备故障诊断/缺陷检测/异常检测有疑问,或者需要论文思路上的建议,欢迎学术咨询
工学博士,《MSSP》《中国电机工程学报》《宇航学报》《控制与决策》等期刊审稿专家,擅长领域:信号滤波/降噪,机器学习/深度学习,时间序列预分析/预测,设备故障诊断/缺陷检测/异常检测
更多推荐


所有评论(0)