from cmath import phase
import math
import numpy
import numpy as np
from numpy import unwrap
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
import scipy
from scipy import interpolate
from scipy.interpolate import interp1d
import scipy.signal.signaltools as sigtool
我有一个由以下代码生成的数据集。在
^{pr2}$
我用以下代码找到局部极大值和局部极小值及其对应位置:loc_mx=[]
loc_mn=[]
loc_mnt=[]
loc_mxt=[]
for i in range(len(comb)-2):
if comb[i] < comb[i+1]:
if comb[i+1] > comb[i+2]:
loc_mx.append(comb[i+1])
loc_mxt.append(i+3)
if comb[i] > comb[i+1]:
if comb[i+1] < comb[i+2]:
loc_mn.append(comb[i+1])
loc_mnt.append(i+3)
利用局部极大值和局部极小值对数据进行插值loc_mn.append(comb[len(comb)-1])
loc_mx.append(comb[len(comb)-1])
loc_mnt.append(k[len(comb)-1])
loc_mxt.append(k[len(comb)-1])
loc_mn.reverse
loc_mx.reverse
loc_mn.append(comb[0])
loc_mx.append(comb[0])
loc_mnt.append(k[0])
loc_mxt.append(k[0])
loc_mn.reverse
loc_mx.reverse
min_mnt=min(loc_mnt)
min_mxt=min(loc_mxt)
max_mnt=max(loc_mnt)
max_mxt=max(loc_mxt)
x1=loc_mxt
y1=loc_mx
f1=interpolate.interp1d(x1,y1,kind="cubic")
x2=loc_mnt
y2=loc_mn
f2=interpolate.interp1d(x2,y2,kind="cubic")
f1(k)
f2(k)
我得到以下错误。在File "emd.py", line 150, in
int_dt.write(str(k[i])+" "+str(f1(k[i]))+" "+str(f2(k[i])))
File "/usr/lib/python2.7/dist-packages/scipy/interpolate/polyint.py", line 54, in __call__
y = self._evaluate(x)
File "/usr/lib/python2.7/dist-packages/scipy/interpolate/interpolate.py", line 448, in _evaluate
out_of_bounds = self._check_bounds(x_new)
File "/usr/lib/python2.7/dist-packages/scipy/interpolate/interpolate.py", line 475, in _check_bounds
raise ValueError("A value in x_new is below the interpolation "
ValueError: A value in x_new is below the interpolation range.
如能在这方面得到任何帮助,将不胜感激。在