2010-01-05 14 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) 

nel codice qui sopra sto ottenendo e l'errore diInterpola Domanda

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 

Non so cosa sta succedendo

risposta

1

Il valore X ,029999999999999999 si verifica due volte, con le coordinate di due differenti Y. Non sarebbe sorpresa me se che ha causato un problema cercando di adattare un segmento spline polinomiale ....

+0

ma se uso interpolate.interp1d allora funziona senza errori sto facendo qualcosa di sbagliato – VASUDEVAN

10

credo che sia a causa dei valori X1 non essere ordinati dal più piccolo al più grande, più anche di avere un duplicato x punto , cioè, è necessario ordinare i valori per X1 e Y1 prima di poter utilizzare lo splrep e rimuovere i duplicati.

splrep dalla documentazione sembra essere l'accesso a basso livello per FITPACK librerie che si aspetta un ordinato, elenco non duplicato è per questo che restituisce un errore

interpolate.interp1d potrebbe sembrare a lavorare, ma hanno in realtà cercato di usarlo per trovare un nuovo punto? Penso che troverai un errore quando lo chiami cioè rep (2)

+1

La [documentazione in-linea] (http: // www.netlib.org/dierckx/percur.f) ​​dice infatti: ** questi valori devono essere forniti in ordine rigorosamente crescente. ** – Tim