0

I'm removing noise using a wavelet transform, but the noise removal result looks messy for zero value. So, how do I exclude zero values in a wavelet transform?

My code is here:

import pywt
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.misc import electrocardiogram

df = pd.read_csv('1225JakariaRwalk2Min.csv', low_memory=False)
columns = ['Fx','Fy','Fz','Mx','My','Mz']
selected_df = df[columns]
FPDatas = selected_df[:15000]

FPData = np.array(FPDatas).astype('float64')

wavelet = 'db4'

DWTcoeffs = []
for i in range(6):
    coeffs = pywt.wavedec(FPData[:, i], wavelet)
    coeffs[-1] = np.zeros_like(coeffs[-1])
    coeffs[-2] = np.zeros_like(coeffs[-2])
    coeffs[-3] = np.zeros_like(coeffs[-3])
    DWTcoeffs.append(coeffs)

filtered_data_dwt = np.zeros(FPData.shape)
for i in range(6):
    filtered_data_dwt[:, i] = pywt.waverec(DWTcoeffs[i], 'db4', mode='symmetric', axis=0)
    
for i in range(6):
    plt.figure(figsize=(15,6))
    plt.plot(FPData[:2000, i], color='red')
    plt.plot(filtered_data_dwt[:2000, i], markerfacecolor='none', color='black')
    plt.legend(['Real Data', 'Denoised Data'], loc='best')
    plt.show()

Denoising data results: enter image description here

Dataset: https://drive.google.com/file/d/1Yi19FHFxmRpJ7CQ58IoPS4rWq3Nm0YrX/view?usp=sharing

You can download the dataset and run the code to answer this question.

Raymond Chen
  • 44,448
  • 11
  • 96
  • 135
stack offer
  • 143
  • 8

0 Answers0