在给定的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()
你可以用这个方法来确定你所期望的频率。在
对这种方法的简单解释是,它在几个时间段内带通重叠的频率范围,并通过连续平均来确定每个频率处表示的信噪比。在
有几种方法可以使用这种分析来选择卷积的带通。在
我建议你看看功率谱密度,找出频谱中功率偏离1/f曲线的局部极大值。较低的频率范围通常是一个更好的统计拟合(除非你的信号携带一个明确编码的振荡信号),所以选择总的最大值会受到影响。在
对于你正在处理的未编码信号(神经数据、历史趋势、观测数据等),我们通常更关心曲线上的“颠簸”发生的位置,因为这些信号指示振荡驱动器携带部分信号的频率。这样我们就可以表示重要的信息,而不是由于随机性而产生的最佳拟合。在
相关问题 更多 >
编程相关推荐