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()
Dataset: https://drive.google.com/file/d/1Yi19FHFxmRpJ7CQ58IoPS4rWq3Nm0YrX/view?usp=sharing
You can download the dataset and run the code to answer this question.