Вопрос интерполяции - PullRequest
       14

Вопрос интерполяции

6 голосов
/ 06 января 2010
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

Не знаю, что происходит

Ответы [ 2 ]

11 голосов
/ 18 января 2010

Я полагаю, это из-за того, что значения X1 не упорядочены от наименьшего к наибольшему, а также у вас есть одна дублирующаяся точка x, т. Е. Вам нужно отсортировать значения для X1 и Y1, прежде чем вы сможете использовать расщепление и удалить дубликаты.

splrep из документов, похоже, низкоуровневый доступ к библиотекам FITPACK, который ожидает отсортированный, не дублирующийся список, поэтому он возвращает ошибку

Может показаться, что interpolate.interp1d работает, но пытались ли вы использовать его для поиска новой точки? Я думаю, вы найдете ошибку, когда вы ее называете, т.е. rep (2)

1 голос
/ 06 января 2010

Значение X 0.029999999999999999 встречается дважды с двумя разными координатами Y. Это не будет удивите меня, если это вызвало проблему, пытаясь подогнать полиномиальный сплайн-сегмент ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...