摘 要:本文首先介绍了由测量数据得出函数关系表达式的两种方法;然后结合例子详细说明了功能强大的MATLAB在此问题中的应用。
关键词:MATLAB;测量数据;曲线拟合;插值
一、引言
一般情况下,通过测量所得到的只是自变量X在一些离散点上的函数值Yi(i=0,1,2,...)。在很多应用领域中,又时常需要根据这些测量的数据,在分析的基础上,去求得自变量X和因变量Y之间的近似函数关系表达式(又称经验公式或数学模型)Y=F(X),以便计算机或科研人员利用它来方便地进行分析或计算。对这个问题的解决有两种方法:1.插值法。假定测量数据是准确的,要求以某种方法描述数据点之间的数据。2. 曲线拟合法。假定已知曲线的规律,作曲线的最佳逼近,但不需要经过所有的数据点。
MATLAB是美国MathWorks公司推出的一种使用简便的工程计算语言,它以矩阵运算为基础,把计算、可视化、程序设计融合到一个交互的环境中,在这里可以实现工程计算、仿真、数据分析及可视化、绘图、应用程序开发等功能。MATLAB在美国等发达国家的大学里已经成为一种必须掌握的基本编程语言,而在国外的研究设计单位,更是早已成为研究和解决工程计算问题的一种标准软件。
下面来介绍MATLAB在测量数据处理中的应用。
二、曲线拟合
一般地,由试验测得的数据经常会带有测量误差,如要求曲线通过所有测量数据点,实际上也就保留了一切测量误差,而这不是我们所希望的。因此,曲线拟合时,并不要求拟合曲线一定要通过测量数据点,而只要求在测量数据点Xi上的误差di=F(Xi)-Yi(i=0,1,...,m)按某种标准最小,这样,它就能反映这些离散数据的变化趋势,尽量避免出现局部的波动。曲线拟合方法是工程上处理测量数据的一种实用数学方法。
曲线拟合的好坏通常总是以最小二乘原理作为衡量准则,因为在计算方法上它要比取其它准则方便和简单得多,且有足够的精度。
在MATLAB中,提供了多项式的最小二乘曲线拟合函数polyfit(x, y, n)。其中:x、y是两个向量,包含将要拟合的x和y数据;n是多项式的阶数;函数值为拟合的多项式的系数。下面以实例来介绍这个函数的用法。
目前,国内生产的低损耗中小型电力变压器的铁心材料基本上均采用晶粒取向冷轧硅钢片Z10-0.35,下面就简要介绍该型号硅钢片单位重量的激磁容量Qt(单位:伏安/公斤)与铁心磁通密度Bt(单位:特斯拉)之间关系曲线的拟合。
Qt与Bt之间的关系如表所示:
步骤:
(1)先在命令窗口中建立测量数据的向量。
Bt=1.43:0.01:1.80;
Qt=[1.62 1.67 1.70 1.75 1.80 1.85 1.90 1.95 2.00 2.10 2.16 2.24 2.32 2.42 2.54 2.70 2.85 3.00 3.25 3.45 3.70 4.00 4.32 4.70 5.00 5.50 6.00 6.60 7.20 8.00 8.70 9.50 10.50 11.70 12.80 14.30 16.00 17.50];
(2)再用plot函数绘制图形。
plot(Bt,Qt,'x');
各测量数据点如图中叉号所示,可看出它们的分布呈非线性。
(3)选择多项式的阶数n为2,计算多项式的系数。
n=2; % n为多项式的阶数
P=polyfit(Bt,Qt,n) %计算n阶多项式曲线拟合的系数
P=
177.0320 -537.0538 408.7708
即多项式为Qt = 177.0320Bt2 -537.0538Bt+408.7708。
(4)绘制拟合图形。
z=polyval(P, Bt);%函数polyval用来计算各Bt的多项式值
plot(Bt,Qt,'x',Bt,z,‘--') % 绘制曲线拟合后的图形
图中的虚线为拟合后的曲线。
(5)若拟合效果不理想,则逐渐提高多项式的阶数n,重复步骤(3)、(4)。
本文采用四阶多项式拟合,得出的拟合函数关系表达式为:
Qt=1587Bt4-9623Bt3+21919Bt2-22216Bt+8453
实线为根据上式拟合后的曲线。显然,4阶多项式拟合的效果比2阶的好得多。
理论上,n+1个数据点可以唯一地确定n阶多项式。实际上,如果多项式的阶数过高,虽然数据点上看到效果好,但数据点之间会出现数据振荡的问题,而且计算时间长;但如果阶数选择得过小,则拟合效果不好。因此有个合理选择阶数的问题。
三、插值
插值法可方便地对测量数据点之间的数据进行函数值的估值。
MATLAB提供了曲线插值函数interp1(x,y,x0,‘method’),其中:x、y为测量数据点;x0是需进行插值的一个数值数组;method为插值算法,主要有下面三个选项:线性插值(‘linear'),三次样条插值(‘spline'),三次多项式插值(‘cubic’),默认为线性插值。函数的返回值为插值后对应于x0的函数值。
例如,需计算当Bt=1.655时的Qt值。
采用线性插值:
Qt=interp1(Bt,Qt,1.655,'linea')
得到的Qt=4.5100
采用三次样条插值:
Qt=interp1(Bt,Qt,1.655,'spline')
得到的Qt=4.5163
注意,样条插值得到的结果与上面所示的线性插值的结果不同。一般地,当各测量数据点的分布具有较好的线性度时,宜选用线性插值,速度快;否则,宜用三次样条插值或三次多项式插值。
多项式插值在信号处理与图像处理上应用较为广泛。
四、结论
由上可看出,采用MATLAB对测量数据进行处理是简便、快捷和直观的。其中,根据最小二乘原理拟合出的图形可供试验报告中采用或手工计算时查找,得出的多项式可供理论分析或产品的CAD中使用。该方法同样适合于其它行业中图表曲线的处理,而且能满足工程的精度要求。
来源:阿里互联电子网