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

python 平滑函数 smooth

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

python 平滑函数 smooth

        matlab里有一个smooth函数,有滑动平均的功能,用起来很丝滑。但python里面似乎没有找到自带的类似函数,自己写了一个。希望尽可能少的调用外部模块。
        请大家帮忙看看,更欢迎拿过去用一用,看哪样修改会更好一点,效率高一点。

## 2021年10月18日13:14:28 完成
def smooth2nd(x,M): ##x 为一维数组
    K = round(M/2-0.1) ##M应为奇数,如果是偶数,则取大1的奇数
    lenX = len(x)
    if lenX<2*K+1:
        print('数据长度小于平滑点数')
    else:
        y = np.zeros(lenX)
        for NN in range(0,lenX,1):
            startInd = max([0,NN-K])
            endInd = min(NN+K+1,lenX)
            y[NN] = np.mean(x[startInd:endInd])
##    y[0]=x[0]       #首部保持一致
##    y[-1]=x[-1]     #尾部也保持一致
    return(y)


######################################################################
## 测试程序
import numpy as np
import matplotlib.pyplot as plt
mngr = plt.get_current_fig_manager()
mngr.window.wm_geometry("+70+0")  # 调整窗口在屏幕上弹出的位置

x = np.random.randn(100,1)  ##产生随机数
M=5 ## 做 M点平滑, M为奇数
y=smooth2nd(x,M)

## 画图展示
plt.plot(x,c='b')
plt.plot(y,c='r')
plt.show()

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

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

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