为小波变换选择*最佳*带宽

2024-06-16 09:11:07 发布

您现在位置:Python中文网/ 问答频道 /正文

在给定的a/a变换范围内,产生连续的a/a变换范围的信号。现在如何在给定的范围内自动选择最佳带宽或规模?在

示例:在图表中,深蓝色线是原始的1D连续信号数据。每隔一条曲线就是一系列带宽的数据转换[10,20,30,40,50]。对于这个例子,如何自动选择最能捕捉曲线变化的带宽?在

注意:答案可以是Python特定的,也可以是关于如何计算“最佳”带宽的非常一般的答案。在

import numpy 
import matplotlib.pyplot as plt
from scipy.signal import ricker, cwt

data         #numpy.ndarray
# data = ([11,  8,  8,  2,  2,  4,  4,  4,  4,  3,  3,  5,  5,  9, 12, 17, 19, 19, 20, 19, 19, 14, 12, 11,  9,  6,  4,  3,  3,  2,  2,  6,  9, 12, 16, 17, 19, 20, 20, 19, 17, 15, 13,  9,  7,  6,  5,  3,  2,  4], dtype=int64)
bandwidths = np.arange(10, 60, 10)
cwt_data = cwt(data, ricker, bandwidths)   #transforms the data
plt.plot(cwt_speed.T, label='Transformed data')
plt.plot(speed, label='original data', linewidth=2)
plt.legend()

enter image description here


Tags: 数据答案importnumpydata信号plotplt
1条回答
网友
1楼 · 发布于 2024-06-16 09:11:07

你可以用这个方法来确定你所期望的频率。在

enter image description here

对这种方法的简单解释是,它在几个时间段内带通重叠的频率范围,并通过连续平均来确定每个频率处表示的信噪比。在

有几种方法可以使用这种分析来选择卷积的带通。在

我建议你看看功率谱密度,找出频谱中功率偏离1/f曲线的局部极大值。较低的频率范围通常是一个更好的统计拟合(除非你的信号携带一个明确编码的振荡信号),所以选择总的最大值会受到影响。在

对于你正在处理的未编码信号(神经数据、历史趋势、观测数据等),我们通常更关心曲线上的“颠簸”发生的位置,因为这些信号指示振荡驱动器携带部分信号的频率。这样我们就可以表示重要的信息,而不是由于随机性而产生的最佳拟合。在

相关问题 更多 >