十堰英文网站建设,有域名一定要买空间做网站,建设网站的预期收益,wordpress国外主题改版权本文归纳了常见的肌肉信号预处理流程#xff0c;方便EMG信号的后续分析。使用pyemgpipeline库 来进行信号的处理。文中使用了 UC Irvine 数据库的下肢数据。 目录 
1 使用wrappers 定义数据类#xff0c;来进行后续的操作 
2 肌电信号DC偏置去除 
3 带通滤波器处理 
4 对肌电…本文归纳了常见的肌肉信号预处理流程方便EMG信号的后续分析。使用pyemgpipeline库 来进行信号的处理。文中使用了 UC Irvine 数据库的下肢数据。 目录 
1 使用wrappers 定义数据类来进行后续的操作 
2 肌电信号DC偏置去除 
3 带通滤波器处理 
4 对肌电信号进行全波整流 
5 肌电信号线性包络 
6 幅度归一化 已知最大收缩的幅度 
7 分割得到一部分时间段的信号 
8 得到最后处理好的数据并且保存下来 1 使用wrappers 定义数据类来进行后续的操作 
import os
import numpy as np
from matplotlib.figure import SubplotParams
import pyemgpipeline as pepdata_folder  uci_lower_limb/A_TXT
data_filename  3Asen.txt
trial_name  Sit
channel_names  [rectus femoris, biceps femoris, vastus internus, semitendinosus]
sample_rate  1000def load_uci_lower_limb_txt(_filepath):with open(_filepath) as fp:collect_values  np.array([])lines  fp.readlines()for line in lines[7:]:  # first few lines are data descriptionitems  [float(e) for e in line.split(\t)[:4] if e ! ]  # last column is not EMG dataif len(items) ! 4:  # last few rows might not have EMG datacontinuecollect_values  np.concatenate((collect_values, np.array(items)))_data  collect_values.reshape(-1, 4)return _datafilepath  os.path.join(data_folder, data_filename)
data  load_uci_lower_limb_txt(filepath)
dataprint(data shape:, data.shape)emg_plot_params  pep.plots.EMGPlotParams(n_rows4,fig_kwargs{figsize: (8, 6),dpi: 80,subplotpars: SubplotParams(wspace0, hspace0.6),},line2d_kwargs{color: red,}
)m  pep.wrappers.EMGMeasurement(data, hzsample_rate, trial_nametrial_name,channel_nameschannel_names, emg_plot_paramsemg_plot_params)m.plot() 原始肌电信号 
2 肌电信号DC偏置去除 
m.apply_dc_offset_remover()
m.plot() DC偏置去除的结果图 
3 带通滤波器处理 
m.apply_bandpass_filter(bf_order4, bf_cutoff_fq_lo10, bf_cutoff_fq_hi450)
m.plot() 带通滤波器处理的结果图 4 对肌电信号进行全波整流 
m.apply_full_wave_rectifier()
m.plot() 全波整流处理肌电信号 5 肌电信号线性包络 
m.apply_linear_envelope(le_order4, le_cutoff_fq6)
m.plot() 肌电信号线性包络处理 6 幅度归一化 已知最大收缩的幅度 
max_amplitude  [0.043, 0.069, 0.364, 0.068]  # assume the MVC is known
m.apply_amplitude_normalizer(max_amplitude)
m.plot() 幅度归一化结果  7 分割得到一部分时间段的信号 
m.apply_segmenter(20.5, 29.5)
m.plot() 分割结果 
8 得到最后处理好的数据并且保存下来 
m.datam.timestampm.export_csv(ex1_processed.csv)