插入问题

2024-09-24 22:22:01 发布

您现在位置:Python中文网/ 问答频道 /正文

import re    
from decimal import *    
import numpy    
from scipy.signal import cspline1d, cspline1d_eval    
import scipy.interpolate    
import scipy    
import math    
import numpy    
from scipy import interpolate

Y1 =[0.48960000000000004, 0.52736099999999997, 0.56413900000000006, 0.60200199999999993, 0.64071400000000001, 0.67668399999999995, 0.71315899999999999, 0.75050499999999998, 0.61494199999999999, 0.66246900000000009]

X1 =[0.024, 0.026000000000000002, 0.028000000000000004, 0.029999999999999999, 0.032000000000000001, 0.034000000000000002, 0.035999999999999997, 0.038000000000000006, 0.029999999999999999, 0.032500000000000001]

rep = scipy.interpolate.splrep(X1,Y1)

在上面的代码中,我得到了

Traceback (most recent call last): 
File "/home/vibhor/Desktop/timing_tool/timing/interpolation_cap.py", line 64, in <module>

rep = scipy.interpolate.splrep(X1,Y1)
File "/usr/lib/python2.6/site-packages/scipy/interpolate/fitpack.py", line 418, in splrep

raise _iermess[ier][1],_iermess[ier][0]
ValueError:     Error on input data

不知道发生了什么


Tags: infrompyimportnumpylinescipyfile
2条回答

我相信这是因为X1值没有从最小到最大的顺序,而且你有一个重复的x点,也就是说,你需要对X1和Y1的值进行排序,然后才能使用splrep并删除重复项。

文档中的splrep似乎是对FITPACK库的低级访问,它需要一个排序的、不重复的列表,这就是为什么它返回一个错误

interpolate.interp1d似乎可以工作,但是你真的尝试过用它来寻找一个新的点吗?我想你叫它时会发现一个错误,即代表(2)

X值0.02999999999999999999出现两次,使用两个不同的Y坐标。不会的 如果这导致了拟合多项式样条曲线段的问题,我会很惊讶。。。。

相关问题 更多 >