简单的同步压缩变换脊线检测(Python&MATLAB)

由于 Heisenberg 测不准原理,线性时频变换方法无法同时在时间和频率方向达到最佳的时频分布,窗函数和小波函数的选择也降低了各方法的自适应性。同样,二次型变换方法难以在去除交叉干扰项的同时保证较高的能量集中度。为了解决该问题,一系列将时频系数重排到信号能量分布的重心,致力于提高能量集中度的后处理方法被提出。首先,通过分析相位信息来聚集分散的时频能量,在此基础上重排方法被提出以改进线性时频变换,其原理下所示。

图中绿色矩形指时频系数分布位置,红色实线为理论瞬时频率,红色箭头为重排方向。该方法通过重新分配时频系数来提高时频分辨率,对微弱故障特征的提取至关重要。然而,重排方法在时间和频率两个方向重排时频系数丢失了信号的相位信息,故该方法不具备重构能力。在实际应用中,信号分析算法的可逆性是分离干扰能量的关键特性,因此多贝西提出一种基于小波变换的同步压缩变换,该方法将连续小波变换各个模态分量附近的能量聚集到瞬时频率算子,在提高时频分布可读性的同时保留信号重构的所需的信息。在此基础上,可以将该方法引入短时傅里叶变换和 S 变换的框架中,这些方法都取得了良好的效果,其适用性也得到了验证。然而,这些方法在处理强调频信号时效果不够理想,这导致其在现实应用难以处理如引力波、心电图等信号的分析。

近年来,随着同步压缩变换和时间重排同步压缩变换在各领域的成功应用,越来越多的学者以同步压缩技术为框架提出了大量改进方法。如针对强调频信号提出的解调变换,该方法使用解调算子对信号进行前处理,降低信号的非平稳度,最终提升同步压缩变换的处理效果。值得一提的是,解调算子的计算主要有两种方法:匹配解调算法和脊估计算法,前者适应性好但计算量偏大,后者计算成本更低但非常依赖脊估计算法。该方法的优势是可以与同步压缩变换结合使用,进一步提升时频分布的时频分辨率。此外,还有以大幅度提升时频分辨率为目标的多重同步压缩变换和时间重排多重同步压缩变换,为降低噪声影响提出的同步提取变换和瞬态提取变换,以及致力于提升算法泛化能力的自适应同步压缩变换等。

复制代码
import numpy as np
from numpy import pi as pi
import seaborn as sns
import matplotlib.pyplot as plt
from src.utilities.utilstf import get_spectrogram
from mcsm_benchs.SignalBank import SignalBank
from mcsm_benchs.Benchmark import Benchmark
from src.methods.method_sstrd import NewMethod

# np.random.seed(0) 
# signal parameters
SNRin = 20
N = 2**10
# Nsub=N//2
sbank = SignalBank(N=N, return_signal=True)
tmin = sbank.tmin
tmax = sbank.tmax
s = sbank.signal_mc_multi_linear()
# s = sbank.signal_mc_crossing_chirps()
# s = sbank.signal_mc_synthetic_mixture()
s = sbank.signal_mc_synthetic_mixture_3()


noise = np.random.randn(N,)
signal = Benchmark.sigmerge(s,noise,SNRin)

Nfft = 2*N
S, F = get_spectrogram(s)
F = F[0:N+1]
methodml = NewMethod()
funa = methodml.method




# signal_output = funa(signal,[],True,Pnei,M,L)
signal_output = funa(signal,)


S_output, F_output = get_spectrogram(signal_output)
F_output = F_output[0:N+1]


print(10*np.log10((np.sum(s[tmin:tmax]**2))/(np.sum((s[tmin:tmax]-signal_output[tmin:tmax])**2))))


plt.figure()
plt.plot(s[tmin:tmax])
plt.plot(signal_output[tmin:tmax],'--')
复制代码
fig, ax = plt.subplots(1,3,figsize = (15,5))
ax[0].imshow(abs(F), origin='lower')#, cmap=cmocean.cm.deep)
ax[0].set_title('Input Signal')
ax[1].imshow(abs(F_output), origin='lower')#, cmap=cmocean.cm.deep)
ax[1].set_title('Output Signal')
ax[2].imshow(abs(F_output-F), origin='lower')#, cmap=cmocean.cm.deep)
ax[2].set_title('Difference')
plt.show()

知乎学术咨询:
https://www.zhihu.com/consult/people/792359672131756032?isMe=1

工学博士,担任《Mechanical System and Signal Processing》《中国电机工程学报》《控制与决策》等期刊审稿专家,擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

相关推荐
微硬创新4 分钟前
耐达讯自动化 CC-Link IE 转 PROFINET网关在污水厂智能化升级实战
人工智能·物联网·网络协议·自动化·信息与通信
Smoothcloud润云7 分钟前
国内GPU算力租赁平台横向测评:资源、成本、稳定性三维对比
人工智能·ai·云计算·gpu算力·gpu
点PY15 分钟前
一种从CTA图像中去除扫描床的方法及装置
人工智能·计算机视觉
一只小bit23 分钟前
LangGraph 记忆、人机交互、时间旅行和核心能力
机器学习·langchain·人机交互·langgraph
晏宁科技YaningAI26 分钟前
VoIP系统的工程实现模型:从信令控制到媒体传输的完整架构解析
网络·人工智能·架构·系统架构·信息与通信
IT_陈寒41 分钟前
Vue这个特性差点让我加班到凌晨,谁懂啊
前端·人工智能·后端
段一凡-华北理工大学1 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
Ljwuhe1 小时前
C++——多态
开发语言·c++
D2aZXN3FhrDa7e2121 小时前
佛山AI智能获客系统适配性:工厂门店如何挑选工具
人工智能·美诚科技有限公司
机器之心1 小时前
WAIC现场,这家公司让一群不同的机器人共用一个大脑
人工智能·openai