首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用Python定义我自己的连续小波?

如何用Python定义我自己的连续小波?
EN

Stack Overflow用户
提问于 2020-11-28 12:45:02
回答 1查看 285关注 0票数 0

正如标题所示,我想用Python定义我自己的连续小波。然而,我不知道如何准确地实现这一点。

我的小波母函数的公式如下

它看起来有点像墨西哥帽子小波,但它们是不同的。

那么,我如何通过Python定义这样一个自定义小波,然后使用这个小波来执行CWT呢?

EN

回答 1

Stack Overflow用户

发布于 2020-11-28 16:14:56

对于每个this,您需要一个接受多个点和一个刻度的函数来作为wavelet参数提供

所以我们这样定义它:

代码语言:javascript
运行
复制
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,而且常数是正面看起来略有不同。注意Ricker小波的math.sqrt(2)缩放

代码语言:javascript
运行
复制
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()

图表如下:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65046484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档