【问题标题】:Confusing artifacts in PyWavelet complex-Morlet analysis of 1-kHz signalPyWavelet complex-Morlet 对 1-kHz 信号的分析中令人困惑的伪影
【发布时间】:2017-05-31 02:49:06
【问题描述】:

我在 PyWavelets 变换中有一些让我很困惑的伪影。我使用的是 0.5.2 版。有人可以解释这里发生了什么吗?

我首先创建一个 1-kHz 信号,然后尝试使用复杂的 Morlet 连续小波变换来分析该信号。我使用 3 个八度音阶:0.5 kHz 到 1 kHz、1 kHz 到 2 kHz 和 2 kHz 到 4 kHz,每个都有 40 个对数刻度。我的直觉是在 y=40(相当于 1 kHz)处应该有一个峰值,并且时间上的任何差异都应该是最小的。相反,我在 y=35 到 37(0.92 到 0.95 kHz)附近得到一个峰值,并且存在某种周期性效应。 (奇怪的是,这种效果似乎只发生在变换的实部中——虚部看起来更接近我想象的样子,尽管它仍然没有正确居中。我相信实部和虚部应该看起来当观察纯正弦波时,就像彼此的时移版本一样。)

我是否在滥用 PyWavelets?这里可能有错误吗?欢迎任何帮助。

import numpy
import pywt
import matplotlib.pyplot as plt

# makes a 1-kHz signal
def make_data(length, quality):
    tau = 2*numpy.pi
    x = numpy.arange(length)
    y = numpy.sin(tau * x/(quality/1000)) # the 1000 is for 1 kHz
    return y

# does the continuous wavelet transform, outputting pic
def do_transform(data, base_freq, num_octaves, voices_per_octave, quality):
    # calculate the scales, based on the desired frequencies
    base_scale = quality / (2*base_freq)
    far_scale = base_scale / 2**num_octaves
    scales = numpy.geomspace(base_scale, far_scale, num=num_octaves*voices_per_octave+1, endpoint=True)

    # actual calculation
    coeffs, freqs = pywt.cwt(data, scales, "cmor", 1/quality)

    print("freqs: " +str(freqs))

    # output
    truncated = coeffs[:, 100:200]
    plt.imshow(abs(truncated), origin='lower', interpolation='none')
    #plt.imshow(truncated.real, origin='lower', interpolation='none')
    #plt.imshow(truncated.imag, origin='lower', interpolation='none')
    plt.subplots_adjust(left=0.01, right=0.99, top=0.99, bottom=0.05)
    plt.show()

data = make_data(1000, 44100)
do_transform(data, 500, 3, 40, 44100)

变换幅度

变换的实分量

变换的虚部

【问题讨论】:

    标签: wavelet-transform pywavelets


    【解决方案1】:

    事实证明这是一个已知问题。 (目前尚不清楚这是一个错误还是只是意外行为,但讨论在这里:https://github.com/PyWavelets/pywt/issues/307。)

    感谢所有看过并考虑过它的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      • 2018-08-05
      相关资源
      最近更新 更多