You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于scipy.signal.cwt的小波变换解析:分离同频异步信号

同频不同到达时间信号分离的小波变换咨询

实验背景

我需要分离单个接收信号中频率近似相同但到达时间不同的信号。实验装置为:在细长结构中激发行波(约0ms时可见),行波沿结构传播至末端反射后返回并被接收(约6.5ms时可见)。激发信号为扭转模态,但接收信号中可能存在其他模态,该信号由大量同频小振幅反射叠加而成,目标是分离对应细长结构不同特征的反射信号。

当前方法与结果

我认为小波变换是最佳方法,因此使用scipy.signal.cwt并自定义了小波函数——该小波与初始激发行波形状一致,逻辑是所有反射信号形式相近。通过小波变换尝试对这些信号进行时域分离,生成了以下截图:

  • Image1、Image3:完整信号(不同配色)
  • Image2、Image4:低振幅区域(不同配色),即感兴趣区域(约1.2ms至6.2ms)

核心咨询问题

  1. Image2和Image4中的各类特征反映了该信号区域的何种构成?
  2. 现有信息是否足以分离接收信号中不同的约10kHz分量?如何实现这种分离?
  3. 小波变换是否是此类同频信号分离的最佳方法(已尝试STFT,效果远差于此)?

核心Python代码

import numpy as np
from scipy import signal
import matplotlib.pyplot as plt

# signal为实验获取的原始数据数组
t = signal[71000:276000,0]
y = signal[71000:276000,3]
sample_frequencies = np.arange(0.25, 50.25, 0.25)
array_of_tens = np.full(200, 10.0)
widths = array_of_tens/sample_frequencies
cwtdata = signal.cwt(y, function1, widths)
cwtdata_yflip = np.flipud(cwtdata)

plt.imshow(cwtdata_yflip, extent=[t[0], t[(len(t)-1)], 0, 50], cmap='RdYlGn', aspect='auto', vmax=abs(cwtdata_yflip).max(), vmin=-abs(cwtdata_yflip).max())
plt.plot(t, (20*y)+35, color='#016937', lw=0.5)
# 省略其他绘图设置
plt.show()

注:function1是生成对应sample_frequencies数组特定宽度的归一化小波的函数

附图说明

  • 完整信号(原始配色)
  • 低振幅区域/感兴趣区域(原始配色)
  • 完整信号(自定义配色)
  • 低振幅区域/感兴趣区域(自定义配色)

内容的提问来源于stack exchange,提问作者UnkindWharf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 17:40:18