import pandas as pd
import numpy as np
import os
import matplotlib.pyplot as plt
import struct# 小波去噪
def wave_del_zero(ecg):import matplotlib.pyplot as pltimport pywt# Get data:#ecg = pywt.data.ecg() # 生成心电信号ecg = ecgindex = []data = []for i in range(len(ecg) - 1):X = float(i)Y = float(ecg[i])index.append(X)data.append(Y)# Create wavelet object and define parametersdb8 = 'db8'#db8 = 'coif'w = pywt.Wavelet('db8') # 选用Daubechies8小波maxlev = pywt.dwt_max_level(len(data), w.dec_len)print("maximum level is " + str(maxlev))#threshold = 0.04 # Threshold for filteringthreshold = 0.04 # Threshold for filtering# Decompose into wavelet components, to the level selected:coeffs = pywt.wavedec(data, 'db8', level=maxlev) # 将信号进行小波分解# coeffs = pywt.wavedec(data, 'coif2', level=maxlev) # 将信号进行小波分解plt.figure()for i in range(1, len(coeffs)):coeffs[i] = pywt.threshold(coeffs[i], threshold * max(coeffs[i])) # 将噪声滤波datarec = pywt.waverec(coeffs, 'db8') # 将信号进行小波重构mintime = 0maxtime = mintime + len(data) + 1plt.figure()plt.subplot(2, 1, 1)plt.plot(index[mintime:maxtime], data[mintime:maxtime])plt.xlabel('time (s)')plt.ylabel('microvolts (uV)')plt.title("Raw signal")plt.subplot(2, 1, 2)plt.plot(index[mintime:maxtime], datarec[mintime:maxtime - 1])plt.xlabel('time (s)')plt.ylabel('microvolts (uV)')plt.title("De-noised signal using wavelet techniques")plt.tight_layout()plt.show()print()# 读取数据 bin 文件
def read_data():""":param file_path: file path name:return: parse data"""file_dir = './'# file_name = 'Raw Data-1-1Y520230404-10-14-03_8192.bin'file_name = 'Raw Data-1-1Y520230404-00-21-39_8192.bin'file_path = os.path.join(file_dir, file_name)data_bin = open(file_path, 'rb+')data_size = os.path.getsize(file_path)data_list = []for i in range(data_size):data_i = data_bin.read(1) # 每次输出一个字节print(data_i)num = struct.unpack('b', data_i) # B 无符号整数,b 有符号整数data_list.append(num[0])print(num[0])data_bin.close()# return data_listfrom sklearn import preprocessingmin_max = preprocessing.MinMaxScaler(feature_range=(-1, 1)) # 缩放到[-1, 1], 增强数据的稳定性data_list_scale = min_max.fit_transform(np.array(data_list).reshape(-1, 1))data_list_scale_part = data_list_scale[:2000]# wave_del_zero(data_list_scale_part)plt.plot(data_list_scale_part)plt.show()print ()if __name__ == '__main__':read_data()