pywt icon indicating copy to clipboard operation
pywt copied to clipboard

Spikes in wavelet after cwt

Open MatthijsRN opened this issue 11 months ago • 2 comments

I run the following code to visualize some wavelets with specific wavelengths. However when I increase my wavelength some samples will spike towards 0. This gets increasingly worse with longer wavelengths. I would greatly appreciate your solution or insight

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

def generate_wavelet(wavelet_name, n_points, wavelength):
    # Scale computation
    scale = pywt.frequency2scale(wavelet_name, 1/wavelength, precision=math.log2(n_points))

    # Signal (impulse to visualize wavelet)
    signal = np.zeros(n_points)
    signal[n_points//2] = 1

    # Perform Continuous Wavelet Transform
    coeffs, _ = pywt.cwt(signal, scales=[scale], wavelet=wavelet_name)

    return coeffs[0]

wavelengths = [20, 40, 80, 100]
n = len(wavelengths)

plt.figure(figsize=(20,5))
for i, wavelength in enumerate(wavelengths):
    wavelet = generate_wavelet('morl', 5*wavelength, wavelength)
    plt.subplot(1, n, i+1)
    plt.title("wavelength: " + str(wavelength))
    plt.plot(wavelet)

Wavelet_spikes

MatthijsRN avatar Dec 11 '24 09:12 MatthijsRN