1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > matlab自定义函数拟合散点

matlab自定义函数拟合散点

时间:2023-04-25 22:15:23

相关推荐

matlab自定义函数拟合散点

假若现在我们有如下的二维散点:

x=1:10; y=[99.999 50.499 20.333 10.788 4.8111 2.7500 1.2322 0.4861 0.29501 0.1113498];

在了解这些散点的大致分布之后,我们可以自己定义和其有相同单调性的函数来对散点进行拟合。

看其分布有点像对数函数,也有点像反函数,我们可以自定义函数:

y = a*log(x)+b/x+c;

两个在(0,+∞)递减的函数加上一个常数,其中散点在x较小的时候比较像对数log,x较大的时候比较像1/x。对于两个函数的系数(即权重),可以通过代码运行得到。

以下为拟合散点的步骤:

函数文件:(beta为三个需要拟合的系数)

function y = volum(beta,x)y = beta(1)*log(x)+beta(2)./x+beta(3);end

m文件:

clc;clearx=1:10; y=[99.999 50.499 20.333 10.788 4.8111 2.7500 1.2322 0.4861 0.29501 0.1113498];beta=nlinfit(x,y,'volum',[0,0,0])

m文件生成了三个数,就是对应的beta的值

我们尝试一下把生成的自定义函数和散点画到一个图,看看拟合效果

clc;clearx=1:10; y=[99.999 50.499 20.333 10.788 4.8111 2.7500 1.2322 0.4861 0.29501 0.1113498];beta=nlinfit(x,y,'volum',[0,0,0])x0 = 0:0.1:10;y0 = 3.1053*exp(-x0)+123.9659./x0-21.8691;plot(x0,y0,'b')hold onplot(x,y,'*')xlabel('x')ylabel('y')

拟合效果看起来还不错(由于数值太大,容易过拟合)

以上是我所举的一个小例子,介绍了自定义函数拟合有分布规律的离散点的方法

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。