从表中间接双线性插值

时间:2018-01-09 10:33:16

标签: python numpy scipy interpolation bilinear-interpolation

Reference Table 我想用这个表插值两个电压信号并将它们转换成相应的温​​度值。它不是我想要执行的直接双线性插值。

例如: T1:1.721V T2:4.025V

步骤1:在内部温度上插入T1。 CH1 我的最终温度为134.375°C。

步骤2:从T2开始,在柱上确定Referenz下的预期值(在250-300°C之间)和T1位于125°C和140°C之间的可能行。 这给了我以下网格: 3.608 3.616 4.462 4.468 现在,我想通过插值(最大值和最小值)计算相应的电压。我最终得到3.613 V和4.46575 V.

步骤3:使用步骤2中计算的两个电压值,沿行插值。即在250-300°C和3.613 V -4.46575 V之间,找到相应于T2 = 4.025 V的温度。

通过直接读取这样的表作为数据框,有没有办法做到这一点?

我已经能够使用索引和匹配在excel上执行此操作,并且执行此操作的更长的方法是从表中读取。例如,像这样的代码来实现第1步:

internal=ref_table.loc[['Internal Temp. (Ch1)'],:].squeeze()
y=[20,85,100,125,140,150,160,170,180]
tit_p1=[]
for i in raw_data['T1 Intern']:
    j=np.interp(i,internal,y)
    tit_p1.append(j)
print(tit_p1)

但是,我有很多表要处理,如果我可以通过使用表作为网格网格以某种方式将电压值转换为温度,这将更容易。

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:1)

这对我有用!我正在为任何可能尝试做类似事情的人发布答案。



import numpy as np
import pandas as pd
ref_table=pd.read_csv('Voltage Temp conversion_1.csv',encoding='ISO-8859-1',sep=';',index_col='Referenz')
ref_table=ref_table.dropna(how='all',axis=1)
ref_table=ref_table.dropna(how='all',axis=0)
print(ref_table)

T1=value
T2=value_2

ref_1=[]
for i in ref_table.iloc[2,:]:
    ref_1.append(i)
ref_1[:] = [value - x for x in ref_1]
idx=ref_1.index(min(i for i in ref_1 if i > 0))
T_it=np.interp(value,ref_table.iloc[2,idx:idx+2],ref_table.columns[idx:idx+2].astype(int))
ref_choose=ref_table.iloc[3:,idx:idx+2]
ref_2=[]
for i in ref_choose.iloc[:,0]:
     ref_2.append(i)
ref_2[:] = [value_2 - x for x in ref_2]
idx_2=ref_2.index(min(i for i in ref_2 if i > 0))
ref_fgrid=ref_choose.iloc[idx_2:idx_2+2,:]
Vr_min=np.interp(T_it,ref_fgrid.columns.astype(int),ref_fgrid.iloc[0,:])
Vr_max=np.interp(T_it,ref_fgrid.columns.astype(int),ref_fgrid.iloc[1,:])
T_ch=np.interp(value_2,[Vr_min,Vr_max],ref_choose.index.astype(int)[idx_2:idx_2+2])
    




干杯!