Basic plotting of wavelet analysis output in matplotlib

前端 未结 1 531
轻奢々
轻奢々 2021-02-04 22:33

I am discovering wavelets in practice thanks to the python module pywt.

I have browsed some examples of the pywt module usage, but I could not grasp the essential step:

相关标签:
1条回答
  • 2021-02-04 22:56

    You should extract the different 1D series from your array of interest, and use matplotlib as in most simple example

    import matplotlib.pyplot as plt
    plt.plot([1,2,3,4])
    plt.ylabel('some numbers')
    plt.show()
    

    from doc.

    You wish to superimpose 1D plots (or line plots). So, if you have lists l1, l2, l3, you will do

    import matplotlib.pyplot as plt
    plt.plot(l1)
    plt.plot(l2)
    plt.plot(l3)
    plt.show()
    

    For a scalogram: what i used was imshow(). This was not for wavelets, but same ID: a colormap.

    I have found this sample for use of imshow() with wavelets, didn t try thought

    from pylab import *
    import pywt
    import scipy.io.wavfile as wavfile
    
    # Find the highest power of two less than or equal to the input.
    def lepow2(x):
        return 2 ** floor(log2(x))
    
    # Make a scalogram given an MRA tree.
    def scalogram(data):
        bottom = 0
    
        vmin = min(map(lambda x: min(abs(x)), data))
        vmax = max(map(lambda x: max(abs(x)), data))
    
        gca().set_autoscale_on(False)
    
        for row in range(0, len(data)):
            scale = 2.0 ** (row - len(data))
    
            imshow(
                array([abs(data[row])]),
                interpolation = 'nearest',
                vmin = vmin,
                vmax = vmax,
                extent = [0, 1, bottom, bottom + scale])
    
            bottom += scale
    
    # Load the signal, take the first channel, limit length to a power of 2 for simplicity.
    rate, signal = wavfile.read('kitten.wav')
    signal = signal[0:lepow2(len(signal)),0]
    tree = pywt.wavedec(signal, 'db5')
    
    # Plotting.
    gray()
    scalogram(tree)
    show()
    
    0 讨论(0)
提交回复
热议问题