import numpy as np
import matplotlib.pyplot as plt
def limit_filter(data, top=4):
'''
限幅滤波法(又称程序判断滤波法)
A、方法: 根据经验判断,确定两次采样允许的最大偏差值(设为top)每次检测到新值时判断:如果本次值与上次值之差<=top,则本次值有效 如果本次值与上次值之差>top,则本次值无效,放弃本次值,用上次值代替本次值
B、优点: 能有效克服因偶然因素引起的脉冲干扰
C、缺点: 无法抑制那种周期性的干扰 平滑度差
'''
flag_arr = np.argwhere(data<0)
temp_data = abs(data)
for i in range(1, len(temp_data)):
if abs(temp_data[i] - temp_data[i-1]) > top:
temp_data[i] = temp_data[i-1]
temp_data[flag_arr] *= -1
return temp_data
def median_filter(data, num=3):
'''
中位值滤波法
A、方法: 连续采样num次(num取奇数) 把num次采样值按大小排列 取中间值为本次有效值
B、优点: 能有效克服因偶然因素引起的波动干扰 对温度、液位的变化缓慢的被测参数有良好的滤波效果
C、缺点: 对流量、速度等快速变化的参数不宜
'''
data_length = len(data)
item_num = data_length // num + 1
padwidth = item_num * num - data_length
temp_data = np.pad(data, (0, padwidth), 'edge').reshape(item_num, num)
median_arr = np.median(temp_data, axis=1).reshape(item_num).repeat(num)[:data_length]
return median_arr
def average_filter(data, num=3):
'''
算术平均滤波法
A、方法: 连续取num个采样值进行算术平均运算 num值较大时:信号平滑度较高,但灵敏度较低 num值较小时:信号平滑度较低,但灵敏度较高
Python滤波
最新推荐文章于 2024-11-06 14:30:29 发布


2301

被折叠的 条评论
为什么被折叠?



