gpt4 book ai didi

python - Python 中 Matlab 的 cwt() 的等价物是什么? (连续一维小波变换)

转载 作者:太空狗 更新时间:2023-10-29 21:01:02 24 4
gpt4 key购买 nike

我想计算具有不同尺度和时移的信号的小波。

在 Matlab 中使用 cwt() Wavelet Toolbox 中提供的函数(连续一维小波变换)我可以将我想要的比例指定为 cwt() 的参数,它将返回所有可能的时移:

x = [1, 2, 3, 4];
scales = [1, 2, 3];
wavelet_name = 'db1';
coefs = cwt(x,scales, wavelet_name);

>> coefs =

-0.0000 -0.0000 -0.0000 0.0000
-0.7071 -0.7071 -0.7071 -0.7071
-1.1553 -1.1553 -1.1553 1.7371

我如何在 Python 中实现它?

到目前为止,这是我的两次尝试:

  1. PyWavelets (Python 中的离散小波变换),我不知道如何指定小波的比例参数。
  2. scipy.signal.cwt , 我找不到 the list of the built-in wavelet functions that I can pass to scipy.signal.cwt : 我想至少有sym2和db1等最常用的小波函数。 (例如,参见 Matlab's built-in wavelet list)。

最佳答案

除了 scipy 之外,似乎还有一些用于 Wavelet 操作的 python 库:

小波

这是 documentation 的链接, github和一个基本的使用片段。它使用起来非常直观,并且有一个相当扩展的库 implemented wavelets .

import pywt
import numpy as np
import matplotlib.pyplot as plt

num_steps = 512
x = np.arange(num_steps)
y = np.sin(2*np.pi*x/32)

delta_t = x[1] - x[0]
scales = np.arange(1,num_steps+1)
wavelet_type = 'morl'
coefs, freqs = pywt.cwt(y, scales, wavelet_type, delta_t)
plt.matshow(coefs)
plt.show()

PyCWT

这是 documentation 的链接, github和一个基本的使用片段。这个库的学习曲线更陡峭,API 也不是很好,但支持 影响锥重要性测试 等功能。

import pycwt as wavelet
import numpy as np
import matplotlib.pyplot as plt

num_steps = 512
x = np.arange(num_steps)
y = np.sin(2*np.pi*x/32)

delta_t = x[1] - x[0]
scales = np.arange(1,num_steps+1)
freqs = 1/(wavelet.Morlet().flambda() * scales)
wavelet_type = 'morlet'

coefs, scales, freqs, coi, fft, fftfreqs = wavelet.cwt(y, delta_t, wavelet=wavelet_type, freqs=freqs)
plt.matshow(coefs.real)
plt.show()

您可以使用 pipconda 轻松安装它们。

最后,这是我没有尝试使用的其他引用资料:

  1. one
  2. two
  3. three

关于python - Python 中 Matlab 的 cwt() 的等价物是什么? (连续一维小波变换),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23741839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com