https://github.com/scw97/PiezoPaperExpressoCode
Raw File
Tip revision: bd8a58fa0e4f796e2ed0b72fe807862305b84b6b authored by scw97 on 05 February 2021, 20:18:22 UTC
changed to exact version used in paper
Tip revision: bd8a58f
my_wavelet_denoise.py
# -*- coding: utf-8 -*-
"""
Created on Mon Jan 09 11:33:19 2017

@author: Fruit Flies
"""
import numpy as np
import pywt
from pywt import threshold as pywtthresh
from statsmodels.robust import mad
import matplotlib.pyplot as plt

def wavelet_denoise(data,wtype='db4',wlevel=2,plotFlag=False):
    
    coeffs = pywt.wavedec(np.squeeze(data),wtype, level=wlevel)
    sigma = mad(coeffs[-1])
    uthresh = sigma*np.sqrt(2*np.log(data.size))
    
    denoised = coeffs[:]
    denoised[1:] = ( pywtthresh(i, value=uthresh, mode='soft') for i in denoised[1:])
    
    data_denoised = pywt.waverec(denoised, wtype)
    
    if plotFlag:
        plt.figure()
        plt.plot(data)
        plt.plot(data_denoised,'r')
    
    if (data.size != data_denoised.size):
        data_denoised = data_denoised[0:data.size]
    return data_denoised
back to top