首页 > 技术文章 > Matlab中插值,拟合,多项式,极限

zhuchunyu123 2022-01-23 22:06 原文

前言

在做一些数据处理的时候,经常使用一些数学工具,对于这些数学工具的定义一定要严谨。

数据的拟合:最小二乘法,表示大致的情况。
数据的插值:一定要过数据点
数据三条样方插值:把线分为若干个片段,每一段用三次多项式表示
多项式:代表数据点的公式,项数越多,次数越大,函数线越曲折,插值数据点越精确。

数据的拟合

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');       %右极限

 

推荐阅读