当前位置:首页>开发>正文

如何用matlab实现多项式拟合 Matlab数据拟合

2023-06-05 09:27:48 互联网 未知 开发

 如何用matlab实现多项式拟合 Matlab数据拟合

如何用matlab实现多项式拟合


实例
先看一个具体的例子,通过构造一系列离散的二维点集,然后用不同阶次的多项式来拟合,比较哪个效果更好。最后说明多项式拟合在matlab中的用法。
首先启动matlab,选择编辑器,再新建一个命令文件。

然后,在编辑器窗口中输入本题的代码。如下图所示。并保存,此处命名为dxsnh。

需要注意的是,保存文件的位置要与当前搜索路径的位置保持一致。这可以通过右键编辑窗口的文件,在弹出的下拉框中选择。

最后再命令行窗口处输入dxsnh,并敲入键盘上的enter建。可以看出阶数越高,曲线与拟合点拟合得越好。

END
命令解释
通过上面的例子知道,matlab实现多项式拟合的关键命令是polyfit。
该命令的格式如下
[p,s]=polyfit(x,y,n)
功能介绍:对于已知的数据x、y进行多项式拟合,拟合的多项式的阶数为n,其中p为多项式的系数矩阵,s为预测误差估计值的矩阵。

Matlab数据拟合

指数拟合如下:
-----------------------------------------------------------------
先定义函数:
function Y=nhfun(b,x)
Y=b(1)*exp(b(2)*x) b(3)
在运行程序:
x=[0 20 40 60 100 130 160 190]
y=[18 17.586 17.136 16.704 15.84 15.129 14.544 13.896]
x0=[0,1,0] %设置初始值

b=lsqcurvefit(@nhfun,x0,x,y)
Xi=0:0.001:200
Yi=b(1)*exp(b(3)*Xi) b(2)
plot(x,y,cp,MarkerEdgeColor,k,MarkerFaceColor,g,MarkerSize,6)
hold on
plot(Xi,Yi,linewidth,2,markersize,16)
legend(原始数据点,拟合曲线)
sprintf(曲线方程:Y=%0.5g e^(%0.5gxX) (%0.5g),b(1),b(2),b(3))
--------------------------------------------------------------
!!!曲线方程程序运行时会报错,是因为你的X数据中有一个为0,这个不影响结果的
曲线方程:Y=3.1461e-020 e^(1xX) (7.8423e-041)
你的参数是不是少了一个??

matlab曲线拟合怎么写?

n=1
A=polyfit(x,y,n) %n给定项式数拟合结A系数向量
y1=polyval(A,x) %计算拟合y值
plot(x,y,k*,x,y1,r-) %画数据比图黑点原始数据红线拟合曲线
%指定函数拟合
f=fittype(a*e^(b*x) c) %引号函数模型默认x自变量其余待定参数
fity=fit(x,y,f) %曲线拟合给拟合结
%再根据给结计算新y值画图神马

在运行MATLAB编程进行数据的处理过程当中,我们常常用到matlab曲线拟合,但是工具箱由于需要人工交互,得到的拟合结果,需要人工的去提取,再输入,所以,工具箱拟合结果十分不适合调用,以及继续下面的操作,所以我们需要用到matlab曲线拟合函数,并且以最常用的多项式拟合函数为例作为matlab曲线拟合例子,

matlab中如何进行曲线拟合

拟合用polyfit和polyval.
b=polyfit(x,y,2)%进行2次拟合,b是多项式前面的值。就如2次拟合中y=ax b,a,b的值。
yy=polyval(b,x)%得到拟合后y的新值
plot(x,yy)%画拟合图