曲线拟合
已知离散点上的数据集,即已知在点集上的函数值,构造一个解析函数(其图形为一曲线)使在原离散点上尽可能接近给定的值,这一过程称为曲线拟合。最常用的曲线拟合方法是最小二乘法,该方法是寻找函数使得最小。
MATLAB函数:p=polyfit(x,y,n)
[p,s]= polyfit(x,y,n)
说明:x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量p。x必须是单调的。矩阵s用于生成预测值的误差估计。(见下一函数polyval)
多项式曲线求值函数:polyval()
调用格式: y=polyval(p,x)
[y,DELTA]=polyval(p,x,s)
说明:y=polyval(p,x)为返回对应自变量x在给定系数P的多项式的值。
[y,DELTA]=polyval(p,x,s) 使用polyfit函数的选项输出s得出误差估计YDELTA。它假设polyfit函数数据输入的误差是独立正态的,并且方差为常数。则YDELTA将至少包含50%的预测值。
练习:如下给定数据的拟合曲线,x=[05,10,15,20,25,30],
y=[175,245,381,480,700,860]。
解:MATLAB程序如下:
x=[05,10,15,20,25,30];
y=[175,245,381,480,700,860];
p=polyfit(x,y,2)
x1=05:005:30;
y1=polyval(p,x1);
plot(x,y,'r',x1,y1,'-b')
计算结果为:
p =05614 0828711560
即所得多项式为y=05614x^2+008287x+115560
===========================================================================
===========================================================================
polyfit函数是matlab中用于进行曲线拟合的一个函数。曲线拟合:已知离散点上的数据集,即已知在点集上的函数值,构造一个解析函数(其图形为一曲线)使在原离散点上尽可能接近给定的值。
解释1用法 polyfit(x,y,n ) ;用多项式求过已知点的表达式,其中x为源数据点对应的横坐标,可为行向量、矩阵,y为源数据点对应的纵坐标,可为行向量、矩阵,n为你要拟合的阶数,一阶直线拟合,二阶抛物线拟合,并非阶次越高越好,看拟合情况matlab polyfit 做出来的值从左到右表示从高次到低次的多项式系数给个例子一看就知道了x = (0: 01: 25)';y = erf(x);p = polyfit(x,y,6)p =00084 -00983 04217 -07435 01471 11064 00004则y=00084x^6-00983x^5+04217x^4-07435x^3+01471x^2+11064x+00004解释2:MATLAB软件提供了基本的曲线拟合函数的命令.多项式函数拟合:a=polyfit(xdata,ydata,n)其中n表示多项式的最高阶数,xdata,ydata为将要拟合的数据,它是用数组的方式输入.输出参数a为拟合多项式y=a1xn++anx+a n+1的系数多项式在x处的值y可用下面程序计算.y=polyval(a,x,m)线性:m=1, 二次:m=2, …polyfit的输出是一个多项式系数的行向量。为了计算在xi数据点的多项式值,调用MATLAB的函数polyval。例:x=0:01:1; y=[-0447 1978 328 616 708 734 766 956 948930 112];
polyfit用法示例结果
A=polyfit(x,y,2)z=polyval(A,x);plot(x,y,'r',x,z,'b')释疑:在不少书中和论坛上,polyfit被误写作“ployfit”,使得很多初学者误解,认为自己安装的MATLAB软件出错,无法找到这样的函数。只要注意拼写正确即可。同样地,polyval函数也易被误写为“ployval”。
x=10:10:80
y=[96 188 290 382 489 583 681 784]
p=polyfit(x,y,1)
xx=10:80;
yy=polyval(p,xx);
plot(x,y,'o',xx,yy)
结果:
x =
10 20 30 40 50 60 70 80
y =
96 188 290 382 489 583 681 784
p =
98417 -62500
function [p,q,w,b,t,u,x,y]=pls-book(a,c,maxrank)
[m,n]=size(a);
[m,l]=size(c);
if nargin==3,
i=min([n,m,maxrank]);
else i=min([n,m]);
end
% x=a;
% y=c;
for h=1:i,
xy=x'y;
[pt,s,qt]=svd(xy'xy,0);
q(h,:)=qt(:,1)';
w(:,h)=(xyqt(:,1))/sqrt(s(1,1));
t(:,h)=xw(:,h);
tsqr=t(:,h)'t(:,h);
u(:,h)=yqt(:,1);
p(h,:)=t(:,h)'x/tsqr;
b(1,h)=(u(:,h)'t(:,h))/tsqr:
x=x-(t(:,h)p(h,:));
y=y-b(h)t(:,h)q(h,:);
end
以上就是关于matlab最小二乘法曲线拟合怎么取全部的内容,包括:matlab最小二乘法曲线拟合怎么取、如何用MATLAB语言编程最小二乘法,具体内容如下、matlab程序编写最小二乘法和markov估计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)