我有一个带阻力的列表(self.interp_data [:,0])和相应的温度(self.interp_data [:,1])。我想用numpy中的interp函数来确定我测得的阻力的温度。这是我的功能:
def calc_T(self, V_out, V_g, R_ref):
R_T = np.array([(V_g * R_ref/ V_out) - R_ref])
print R_T
print type( self.interp_data[0,0])
print type( self.interp_data[0,1])
print bisect_right(self.interp_data[:,0], R_T)
print self.interp_data[:,0] < R_T
return np.interp(R_T, self.interp_data[:,0],self.interp_data[:,1] )
结果如下:
[ 22549.01960784]
<type 'numpy.float64'>
<type 'numpy.float64'>
211
[False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False False
False False False False False False False False False False False True
True True True True True True True True True True True True
True True True True True True True True True True True True
True True True True True True True True True True True True
True True True True True True True True True True True True
True True True True True True True True True True True True
True True True True True True True True True True True True
True True True True True True True True True True True True
True True True True True True True True True True True True
True True True True True True True True True True True True
True True True True True True True True True True True True
True True True True True True True]
[ 150.]
此列表包含211个元素,最后一个元素的值为150.因此,bisect和interp都同意R_T小于列表中的最小电阻值。
但比较高调它介于两者之间,我同意。如何正确使用interp来获得与我测量的电阻相对应的温度?
答案 0 :(得分:3)
问题是必须对xp
的{{1}}输入进行排序。考虑到这一点,您的示例应该正常工作:
np.interp(x, xp, fp)