在线跪求大佬帮忙看一下这个s-g卷积平滑程序,一直改不好

qq_45131204 2019-09-03 10:43:55
import numpy as np
import xlrd
import xlwt
xls = xlwt.Workbook(encoding='utf-8')
sht = xls.add_sheet(u'sheet1',cell_overwrite_ok=True)
workbook=xlrd.open_workbook(r'E:\\7.11-1平均.xlsx')
table=workbook.sheets()[int(0)]
nrows=table.nrows
ncols=table.ncols


def create_x(size, rank):
x = []
for i in range(int(2)*int(size)+int(1)):
m = i - size
row = [m**j for j in range(rank)]
x.append(row)
x = np.mat(x)
return x

def savgol(data, window_size, rank):
m = int((window_size-int(1))/int(2))
#odata = data[:]
# 处理边缘数据,首尾增加m个首尾项
for t in range(m):
data.insert(int(0),data[int(0)])
data.insert(len(data),data[len(data)-int(1)])
# 创建X矩阵
x = create_x(int(m),int(rank))
# 计算加权系数矩阵B
b = (x * (x.T * x).I) * x.T
a0 = b[m]
a0 = a0.T
# 计算平滑修正后的值
ndata = []

y=[]
for i in range(len(data)):
for j in range(window_size):
y.append(data[i+j])
y1= np.mat(y)*a0
y1= float(y1)
ndata.append(y1)
y.clear()
return ndata

for p in range(int(1),nrows):
l=[]
for n in range(int(1),ncols):
alldata=table.col_values(n)
l.append(alldata[p])
savgol(l,int(5),int(3))
for o in range(int(1),ncols):
sht.write(p,o,ndata[o])
xls.save('F:\\python\\chengxu\\excel\\123.xls')


...全文
15 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧