插值问题

VAS*_*VAN 6 python scipy

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)
Run Code Online (Sandbox Code Playgroud)

在上面的代码我得到和错误

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
Run Code Online (Sandbox Code Playgroud)

不知道发生了什么

pet*_*tik 11

我相信这是由于X1值没有从最小到最大排序加上你还有一个重复的x点,即你需要对X1和Y1的值进行排序,然后才能使用splrep并删除重复项.

来自文档的splrep似乎是对FITPACK库的低级访问,它期望一个排序的,非重复的列表,这就是它返回错误的原因

interpolate.interp1d似乎可以工作,但你真的试过用它来找到一个新的点吗?我打电话给你,你会发现一个错误,即rep(2)


Jim*_*wis 1

X 值 0.029999999999999999 出现两次,具有两个不同的 Y 坐标。如果这导致尝试拟合多项式样条线段出现问题,我不会感到惊讶......