栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

1-2-4-2-1 五点平滑滤波

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

1-2-4-2-1 五点平滑滤波

 搜了很久也没找到Python怎么设置有权重的5点平滑滤波器,就自己写了一个1-2-4-2-1五点平滑。

为了让平滑后的时间序列边缘值不为空,往外扩展了2个数,是用边缘的数据平均得出的,这样平滑后不会太失真。

import csv

def smooth_5(data):
    import numpy as np
    if type(data) == "xarray.core.dataarray.DataArray":
        data=data.data.tolist()
    elif type(data) == 'array':
        data=data.tolist()
        
    data = [float(i) for i in data]
    
    # 扩展边缘值
    data_02 = (data[0]+data[1]+data[2])/3.0
    data_01 = (data[0]+data[1]+data[2]+data[3])/4.0
    data_1 = (data[-1]+data[-2]+data[-3]+data[-4])/4.0
    data_2 = (data[-1]+data[-2]+data[-3])/3.0
    data = [data_02,data_01]+data+[data_1,data_2]
    
    # 乘上各个位置的系数
    arr_02 = np.array(data)[:-4]*0.1
    arr_01 = np.array(data)[1:-3]*0.2
    arr_00 = np.array(data)[2:-2]*0.4
    arr_1 = np.array(data)[3:-1]*0.2
    arr_2 = np.array(data)[4:]*0.1
    
    # 合并数组
    arr_data = arr_02+arr_01+arr_00+arr_1+arr_2
    
    return arr_data
    
Id=[]
with open('Id_norm.csv',encoding='gb18030',errors="ignore") as d:
    csv_file = csv.reader(d)
    for row in csv_file :
      Id.append(row)
Id_norm=Id[1]

Id_5=smooth_5(Id_norm)

实测能用

同理,还可以做1-2-1,1-3-4-3-1等等滤波器,只需要修改相应系数即可

欢迎交流

祝各位科研顺利~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/768874.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号