APP下载

基于最小二乘法线性度计算的实现

2018-09-10唐怀奎

河南科技 2018年7期
关键词:最小二乘法

唐怀奎

摘 要:本文针对机载产品中线性度测试无法通用的问题,提出最小二乘法技术。首先探讨线性度,然后调用C程序中的Account函数和AccountError函数,实现了10组数据以内的线性度和拟合直线自动测试,并输出了精确的拟合图像。

关键词:最小二乘法;线性度;拟合直线

中图分类号:TG839 文献标识码:A 文章编号:1003-5168(2018)07-0067-02

The Realization of Linear Degree Calculation Based on Least Square Method

TANG Huaikui

(Wuhu State-owned Mechanical Factory,Wuhu Anhui 241000)

Abstract: In this paper, the least square method was proposed to solve the problem that the linearity of the airborne products can not be tested. First, we discussed the linearity. Then we called the Account function and the AccountError function in the C program, and achieved the automatic test of linearity and fitting straight line within the 10 sets of data, and output the exact fitting image.

Keywords: least square method;linearity;fitting straight line

在机载产品测试中,需要利用最小二乘法对采集到的数据进行线性度和拟合直线计算分析。该算法的实现多嵌入在各测试程序中,无法通用;或利用Excel表中的图表功能计算,但只能实现拟合直线计算,无法进行线性度计算。因此,本文基于最小二乘法,在上位机中实现了线性度和拟合直线的自动计算,并提供了使用例程。

1 线性度

线性度是描述传感器静态特性的一个重要指标,以被测输入量处于稳定状态为前提。在规定条件下,传感器校准曲线与拟合直线间的最大偏差与满量程输出的百分比,称为线性度,该值越小,表明线性特性越好。

拟合直线是一条通过一定方法绘制出来的直线,求拟合直线的方法有端基法和最小二乘法等。

2 基于最小二乘法的线性度计算

最小二乘法是一种数学优化技术,其通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。该数据处理方法已在多学科领域中得到广泛应用,其原理就是找到一条直线使所有图上的点纵坐标的差值的平方和最小,也就是方差最小[1]。

3 算法实现

3.1 总体思路

对产品某项性能进行测试时,需要对采集到的一组数据进行线性度和拟合直线计算。

3.2 线性度算法实现

线性度算法实现以子函数的形式,包含5个参数,各参数意义与拟合度直线相同,该函数返回值为float型数据,即通过输入参数计算出线性度。

float AccountError(float k, float b, int num, float *corx, float *cory)

{

CString str;

float error[10];

float liney[10];

for(int i=0; i{

liney[i] = k*corx[i]+b;

error[i] = abs(cory[i]-liney[i]);

}

float errormax = error[0];

float ymax = liney[0];

float ymin = liney[0];

for(int i=1; i

{

float temp1 = 0;

float temp2 = 0;

float temp3 = 0;

float temp4 = 0;

for(int i=0; i{

temp1 = temp1 + corx[i]*cory[i];

temp2 = temp2 + corx[i];

temp3 = temp3 + cory[i];

temp4 = temp4 + corx[i]*corx[i];

}

*k = (num*temp1-temp2*temp3)/(num*temp4-temp2*temp2);

*b = (temp4*temp3-temp2*temp1)/(num*temp4-temp2*temp2);

}

应用中,将产品测试中需要计算拟合直线的参数中一组存在对应关系的数据分别按顺序写入两个数组,通过调用以上函数,可得到这组数据的拟合直线斜率和截距[2]。

3.4 使用例程

结合多型产品的工艺规程要求,计算线性度时一般最多采集10个点的数据,因此本使用例程假设为采集点数不大于10个的情况。

①定义float型数组。定义float X[10]和float Y[10],用于存放存在对應关系的一组两个变量的值。

②定义int型变量。定义int k、b、num,分别用于存放拟合直线的斜率、截距和采集点个数。

③定义float型变量。定义float Error,用于存放线性度。

④计算拟合直线。按以下方式调用拟合直线计算函数:Account(X, Y, Num, &K, &B)。

⑤计算线性度。按以下方式调用线性度计算函数:Error = AccountError(K, B, Num, X, Y)。

按以上步骤,可按设计要求实现对拟合直线和线性度的自动计算。本文在上位机中按以上步骤编写了人机交互界面,该界面分为检测点数据和显示两个区域。在检测点数据中,通过手动输入的方式将最多10组数据写入对应位置,在测试点数框中输入有效数据组个数;显示区用于显示拟合直线和线性度。

3.5 实验验证

在检测点数据区测试点1至测试点8分别输入以下8组数据:(-8,0.13)(-6,10.8)(-4,1.9)(-1,3.4)(0,3.9)(1,4.6)(3,5.56)(5,6.16)。

在测试点数框内输入8,依次点击“读入数据”“绘制波形”按钮后,在左侧的显示区将自动显示出拟合直线和由各测试点连接的折线图,可直观显示数据的线性度情况,并在线性度误差框内显示计算出的线性度误差为±0.03%。

经实验验证,该算法实现了基于最小二乘法的数据拟合直线和线性度的自动计算与显示。

4 结论

本文通过调用C程序中的Account函数和AccountError函数,实现了10组数据以内的线性度和拟合直线自动测试,并输出了精确的拟合图像。

参考文献:

[1]费业泰.误差理论与数据处理[M].北京:机械工业出版社,2006.

[2]谭浩强.C程序设计[M].2版.北京:清华大学出版社,1999.

猜你喜欢

最小二乘法
基于压电陶瓷的纳米定位与扫描平台模型辨识算法研究
基于惯导角度量测的轨道平面最佳线形参数估计算法
马尔科夫链在市场预测中的应用
一种改进的基于RSSI最小二乘法和拟牛顿法的WSN节点定位算法
最小二乘法基本思想及其应用
全国各省份经济发展影响因素的实证分析
全国主要市辖区的房价收入比影响因素研究
手动求解线性回归方程的方法和技巧
一种基于最小二乘法的影子定位技术
基于最小二乘拟合的太阳影子定位模型