Matlab拟合曲线y=a/(b*x+c),求a,b,c的值?我拟合出来不知道为什么一直有问题。。。

x=[14.79,259.63,356.72,420.24,457.9,503.58,528.9,546.71,567.54,576.87,586.08,597.04,6... x=[14.79,259.63,356.72,420.24,457.9,503.58,528.9,546.71,567.54,576.87,586.08,597.04,604.6,611.9];

y=[146.8,246.8,346.8,446.8,546.8,746.8,946.8,1146.8,1546.8,1846.8,2246.8,3046.8,4046.8,5546.8];

如何用Matlab拟合出a,b,c的值。。。。不知道为什么我拟合的一直不对。。。真心求帮助,谢谢!!!
展开
 我来答
lhmhz
高粉答主

2020-05-11 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7263 获赞数:17001

向TA提问 私信TA
展开全部

用Matlab求拟合曲线y=a/(b*x+c)的a,b,c的值?可以按下列步骤进行:

1、将数据分别赋值给【x,y】

2、自定义拟合曲线的函数,即

func=@(beta,x)beta(1)./(beta(2)*x+beta(3));

式中,a=beta(1),b=beta(2),c=beta(3)

3、初定beta的初值。即beta0=[0.5 0.5 0.5];

4、使用nlinfit函数,求a,b,c的值。即

[beta,r]=nlinfit(x,y,func,beta0);

a=beta(1),b=beta(2),c=beta(3)

式中,beta拟合系数,r残差

5、计算拟合值,即y1=func(beta,x);

6、数据对比,[y y1]

7、根据【x,y】和【x,y1】 的数值,使用plot函数绘制原始数据与拟合数据的对比图。即

plot(x,y,'o',x,y1)

legend('原始数据','拟合数据')

xlabel('x'),ylabel('y')

运行结果如下所示。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式