测量的信号可能显示数据中非固有的整体模式,这些趋势有时会妨碍数据分析,因此必须进行去趋势。
网址:https://ww2.mathworks.cn/help/signal/ug/remove-trends-from-data.html
描述:本案例由1个示例构成。
-
针对以上案例,采用Python语言实现。
-
python
# 导入原始信号
from scipy.io import loadmat
import matplotlib.pyplot as plt
import numpy as np
ecgl = loadmat("ecgl.mat")
ecgnl = loadmat("ecgnl.mat")
t = len(ecgl['ecgl'])
x = np.linspace(0, t, t)
# 画图
fig, (ax1, ax2) = plt.subplots(2, 1)
ax1.plot(ecgl['ecgl'])
fig.suptitle('ECG Signals with Trends')
plt.ylabel('Voltage (mV)')
ax2.plot(ecgnl['ecgnl'])
plt.ylabel('Voltage (mV)')
Text(0, 0.5, 'Voltage (mV)')
python
# 对两个信号去趋势
from scipy.signal import detrend
dt_ecgl = detrend(ecgl['ecgl'], axis =- 1, type='linear', bp=0, overwrite_data=False)
dt_ecgnl = detrend(ecgnl['ecgnl'], axis =- 1, type='linear', bp=0, overwrite_data=False)
python
# 画出去趋势后的信号
fig, (ax1, ax2) = plt.subplots(2, 1)
ax1.plot(dt_ecgl)
fig.suptitle('Detrended ECG Signals')
plt.ylabel('Voltage (mV)')
ax2.plot(dt_ecgnl)
plt.ylabel('Voltage (mV)')
Text(0, 0.5, 'Voltage (mV)')
这些趋势已有效地去除,可以看到与原始信号相比,信号的基线已不再偏移,它们现在可用于进一步处理。