前言
在做一些数据处理的时候,经常使用一些数学工具,对于这些数学工具的定义一定要严谨。
数据的拟合:最小二乘法,表示大致的情况。
数据的插值:一定要过数据点
数据三条样方插值:把线分为若干个片段,每一段用三次多项式表示
多项式:代表数据点的公式,项数越多,次数越大,函数线越曲折,插值数据点越精确。
数据的拟合
clc; clear all; x=[0.2 0.3 0.5 0.6 0.8 0.9 1.2 1.3 1.5 1.8]; y=[1 2 3 5 6 7 6 5 4 1]; p5=ployfit(x,y,5); %5阶多项式拟合 y5=ployval(p5,x); %拟合完成得到的系数 p5=vpa(poly2sym(y5),5); %显示5阶多项式 p9=ployfit(x,y,9); %9阶多项式拟合 y9=polyval(p9,x); %改变函数值后得到的新y9值 figure; %画图显示 plot(x,y,\'bo\'); %图上的第一根线 hold on; plot(x,y5,\'r:\'); %图上的第二根线,以红色线表示 plot(x,y9,\'g--\'); %图上的第三根线,以绿色线表示 legend(\'原始数据\',\'5阶多项式拟合\',\'9阶多项式拟合\'); xlabel(\'x\'); ylabel(\'y\');
另一种拟合的方法
%先把x,y显示出来 x=[0.2 0.3 ... 1.5 1.8]; y=[1 2 ... 4 1]; figure; plot(x,y,\'bo\'); %再在图像界面 工具-----基本拟合-------(右下角,显示拟合后的多项式)
多项式
多项式:将多项式的系数按照降幂次序存放在向量中。
clc; clear all; p1=[4 3 2 1]; y=poly3sym(p1); %由向量创建多项式,并显示
结果是
逆运算,已知根求多项式:
clc; clear all; p=poly(r); %由多项式的根创建多项式 y=poly2sym(p); %显示多项式
clc; p=[1 -1 -6]; %多项式的系数向量 x=2:1:5; y=polyval(p,x); %多项式在x处的值
多项式的求值:已知x,求y值
polyval() %以矩阵中的元素为计算单位 polyvalm() %以矩阵为计算单位
多项式的求根: 当y=0时,求x的值
roots(p) %参数p为多项式系数
多项式相乘
c=conv(a,b)
多项式的积分
y1=polyint(p1,3); %对多项式p1求积分,常数项为3
数据的插值
一维多项式插值用
interp1()
二维插值(用于图像处理)
zi=interp2(x,y,z,xi,yi) %先是根据x,y,z产生插值函数,F=f(x,y) %再次把xi,yi输入f(x,y)得到zi
三次样条插值,用spline()
yi=spline(x,y,xi) %这一步也可以拆分为两步 pp=spline(x,y); yi=ppval(xi); %ppval()对数据xi进行插值计算
函数(多项式)的极限
y=limit(f); %当x趋向于0时,f的值 y=limit(f,x,a); %等同于y=limit(f,a);当x趋向于a时,f的值 y=limit(f,x,a,\'left\'); %左极限 y=limit(f,x,a,\'right\'); %右极限
请发表评论