具有基本连续 PyWavelet 的小波伪像

问题描述 投票:0回答:1

我正在尝试计算出使用 pyWavelet 连续小波变换时应该通过的八度/语音范围。为此,作为一个游戏,我从文档中复制了一些 pyWavelet 示例。 我使用里克小波而不是高斯一阶导数。但我认为这对我的发现没有任何影响。 “连续小波变换”章节中第一个示例

import pywt
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(512)
y = np.sin(2*np.pi*x/32)
coef, freqs=pywt.cwt(y,np.arange(1,129),'gaus1')
plt.matshow(coef)
plt.show()

在一种情况下,我将 y 转换为狄拉克函数,其中 y[256]=1,数组的其余部分为 0。 当我查看 8/16/32/64 尺度的小波系数时,我得到以下结果,更重要的是,我可以看到一系列明显影响我的结果的尖峰。 Wavelet coefficients for a dirac at scales 8/16/32/64 Wavelet coefficients for the pyWavelet example at scales 8/16/32/64

我想我可能错过了一些东西。

有没有办法正确设置比例,或者输入信号可能有一些限制? 谁能解释一下为什么我有这些条纹?

python signal-processing wavelet wavelet-transform pywavelets
1个回答
0
投票

我无法解释

pywt
有什么问题或在这种情况下如何正确使用它。也许有一些数字问题(也许 pywt 转换为 float32?)。

但是,我设法获得了干净的信号,但是使用

scipy
,带有瑞克小波的“狄拉克三角洲”:

import scipy.signal
y = np.zeros(512)
y[256] = 1
coef = scipy.signal.cwt(y,scipy.signal.ricker, np.arange(1,129),)
plt.plot(coef[32, :])
plt.show()

您可能想在

pywt
github 上写一个关于此问题的问题,并添加与 scipy 的比较。

© www.soinside.com 2019 - 2024. All rights reserved.