用于事件阈值分割方法的滤波
原始数据:
极值滤波后:
# import numpy as np
def Compare_P(a,b): #输出绝对值较大的值
a1 = np.absolute(a)
b1 = np.absolute(b)
if (a1 < b1):
return b
else:
return a
def moving_peak_filter(data, window_size):
# 创建一个与数据长度相同的空数组,并填充为NaN
smoothed_data = np.full_like(data, np.nan)
# 计算滑动窗口内数据的绝对值最大的值,并填充到结果数组中
half_window = window_size // 2
for i in range(len(data)):
start = max(0, i - half_window)
end = min(len(data), i + half_window + 1)
a = np.max(data[start:end])
b = np.min(data[start:end])
smoothed_data[i] = Compare_P(a,b)
return smoothed_data
window_size = 20 # 滤波窗口大小
# data = ... 读取需要降噪的数据
print("滤波前的数据长度:", len(data))
# 使用滑动均值滤波
smoothed_data = moving_peak_filter(data, window_size)
print("滤波后的数据长度:", len(smoothed_data))