在分析非平稳信号(如心电、机械振动)时,希望把信号拆分成不同频率的成分,便于后续诊断或降噪。传统方法如傅里叶变换只能整体分析,小波变换需要预先选择基函数,而经验模态分解(EMD)虽自适应却容易产生模式混叠。经验小波变换(EWT)通过分析信号频谱自动划分频带,再构建小波滤波器组,兼顾了自适应性和数学严谨性。然而EWT的频谱分析通常基于傅里叶谱,对于某些信号(如振荡衰减信号)可能不够精细。Fourier-Bessel序列展开是一种用贝塞尔函数族分解信号的方法,其谱能更清晰地反映信号的频率成分,尤其适合处理有限区间内的信号。将Fourier-Bessel序列展开与EWT结合,先用Fourier-Bessel序列展开获得更准确的频谱,再基于其局部极大值确定频带边界,最后用EWT滤波器组分解信号。
这个算法先用贝塞尔函数分析信号的频率成分,在谱上找到最突出的几个频率峰,以这些峰之间的中点作为分界线,设计一组平滑的小波滤波器,最后用这些滤波器把原始信号拆成不同频段的分量,从而实现自适应分解和降噪。
算法步骤
准备信号 拿到一段原始信号,可以是心电、声音或振动数据。
计算Fourier-Bessel序列谱 用Fourier-Bessel序列展开把信号表示成一系列贝塞尔函数的加权和,每个贝塞尔函数对应一个特征频率。把这些权重画出来,就是Fourier-Bessel序列谱——它比普通傅里叶谱更“干净”,能突出主要的频率成分。
找谱上的“山头” 在Fourier-Bessel序列谱上找出局部极大值(也就是频率成分最突出的那些点),把它们按强度从大到小排序,只取前N个最强的(比如前15个)。这些“山头”就是信号的主要频率分量。
确定频带分界线 把相邻两个“山头”的中点作为频带的分界点,这样就把整个频率轴划分成了若干段(每个段对应一个主要频率分量及其周围过渡带)。
设计小波滤波器组 根据这些分界点,设计一组Meyer小波滤波器。每个滤波器负责一个频段,并且相邻滤波器之间是平滑过渡的,保证最后能把信号完整地拆开再拼回去。
分解信号 把原始信号分别通过这组滤波器,就得到了各个频段的子信号(每个子信号对应一个“山头”附近的频率成分)。这些子信号相加就能完美恢复原始信号。
降噪与重构 如果噪声主要集中在某些高频子带,直接扔掉这些子带,把剩下的加起来,就能得到降噪后的信号。也可以按能量占比自动决定保留哪些子带(比如保留能量总和超过95%的那些)。