2010-01-05 15 views
6
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) 

en el código anterior que estoy recibiendo y error deInterpolar Pregunta

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 

No sé lo que está sucediendo

Respuesta

1

El valor X 0.029999999999999999 ocurre dos veces, con dos diferentes coordenadas Y. No me sorprendería si eso causara un problema al tratar de encajar en un segmento spline polinomial ....

+0

, pero si uso interpolate.interp1d, entonces funciona sin error Estoy haciendo algo mal – VASUDEVAN

10

Creo que es debido a que los valores X1 no están ordenados desde el más pequeño hasta el más grande además también tiene un duplicado x punto , es decir, debe ordenar los valores para X1 e Y1 antes de poder usar el splrep y eliminar los duplicados.

splrep a partir de los documentos parece ser el acceso de bajo nivel a FitPack bibliotecas que espera una lista ordenada, no duplicados por eso se devuelve un error

interpolate.interp1d podría parecer que funciona, pero ¿ha intentado realmente a usarlo para encontrar un nuevo punto? Creo que encontrará un error cuando lo llame, es decir, rep (2)

+1

La [documentación en línea] (http: // www.netlib.org/dierckx/percur.f) ​​de hecho dice: ** estos valores deben ser suministrados en orden estrictamente ascendente. ** – Tim