【发布时间】:2020-11-28 04:45:02
【问题描述】:
如标题所示,我想用 Python 定义自己的连续小波。但是,我不知道如何实现这一点。
我的小波母函数公式如下
它看起来有点像墨西哥帽子小波,但它们是不同的。
那么如何通过Python定义这样一个自定义小波,然后可以使用这个小波进行CWT呢?
【问题讨论】:
标签: python scipy wavelet wavelet-transform pywavelets
如标题所示,我想用 Python 定义自己的连续小波。但是,我不知道如何实现这一点。
我的小波母函数公式如下
它看起来有点像墨西哥帽子小波,但它们是不同的。
那么如何通过Python定义这样一个自定义小波,然后可以使用这个小波进行CWT呢?
【问题讨论】:
标签: python scipy wavelet wavelet-transform pywavelets
根据this,您需要一个函数,该函数采用多个点和一个比例作为wavelet 参数提供
所以我们这样定义:
import math
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
mother_wavelet = lambda z : np.exp(-z*z/4)*(2-z*z)/(4*math.sqrt(math.pi))
def mexican_hat_like(n,scale):
x = np.linspace(-n/2,n/2,n)
return mother_wavelet(x/scale)
让我们测试一下。我们注意到实际上看起来与您的非常相似的东西是available。不同之处在于缩放a 并且常量是前面看起来略有不同。注意math.sqrt(2) Ricker 小波的缩放
points = 100
a = 4.0
vec_ours = mexican_hat_like(points, a)
vec_theirs = signal.ricker(points, a*math.sqrt(2))
plt.plot(vec_ours, label = 'ours')
plt.plot(vec_theirs, label = 'ricker')
plt.legend(loc = 'best')
plt.show()
这是图表:
【讨论】:
mexican_hat_like 中定义mother_wavelet?
x = np.linspace(-n/2,n/2,n) return mother_wavelet(x/scale) 的定义中看到它们,所以不确定您的意思?我不确定小波的“真实”值是什么,但你可以在那里改变你的 x-s