最近高温测试的项目接近了尾声,标定工作成了现阶段的主要任务,对光学高温传感器的标定一般是使用热电偶来进行标定。
前期标定使用的多项式拟合的方法,这种方法的原理就是使用热电偶的数据和光学传感器的腔长数据进行来找到一个高阶的多项式,而后在程序中使用这个多项式来根据腔长计算出实际的温度,但是这种方法在程序中的效果并不是很好,计算出来的温度和热电偶的温度相差很大,跟BOSS汇报后,指示使用实验数据进行线性插值方法。
首先来说下线性插值的原理,首先有规律的记录一组腔长和热电偶的数据,而后使用得到的腔长数据进行搜索,在最接近的两点之间使用正比例函数进行插值。公式为:
y = y0 + (x-x0)*(y1-y0)/(x1-x0)
它是由直线解析函数的差分式推导而来:
(y-y0)/(x-x0)=(y1-y0)/(x1-x0)
是最简单的线性插值方法,那么现在这个算法的关键部分就是在于从数据表中搜索到两个和目标数据最接近的两个数据,由于我们的数据表示有序的,我们可以使用二分查找的方法轻松的找到这两个数据。
二分查找法的基本原理就是建立low和high这个索引量来进行二分查找,但它最初的目的是要查找到目标数据,这两个量在查找结束后本身是没什么作用的,但是在我们这里,这两个量就是最接近目标数据的两个量。但是二分法查找结束的条件是low>high,我们要进行线性插值,则要将查找结束后的两个量进行交换。算法代码如下:
目前读取的标定数据还是从txt文本当中读取,为了更方便的读取和修改数据,可以使用本地Acsess数据库文件来代替txt文件。