用matlab进行非线性拟合 nlinfit函数

有组数据x=[1.13891.06220.98220.9340.92510.9158];y=[0.0315.0315.0519.9730.3];拟合函数为y=-k*ln(... 有组数据
x=[1.1389 1.0622 0.9822 0.934 0.9251 0.9158];
y=[0.03 1 5.03 15.05 19.97 30.3];
拟合函数为y=-k*ln(x+a)-b;
我的拟合程序是
clc;clear;
x=[1.1389 1.0622 0.9822 0.934 0.9251 0.9158];
y=[0.03 1 5.03 15.05 19.97 30.3];
myfunc=inline('-beta(1)*ln(x+beta(2))-beta(3)','beta','x');
beta=nlinfit(x,y,myfunc,[1 1 1]);
k=beta(1),a=beta(2),b=beta(3)
%test the model
xx=min(x):max(x);
yy=-k*ln(x+a)-b;
plot(x,y,'o',xx,yy,'r')
程序运行后总提示错误,不知道怎么回事,求教高手
展开
 我来答
wacs5
推荐于2016-12-05 · TA获得超过1.6万个赞
知道大有可为答主
回答量:3724
采纳率:82%
帮助的人:2732万
展开全部
ln->log
Matlab中ln就是log
你的初值我改成000了,111的话,计算出来有一小部分虚数成份。
另外最后一个plot我也改了一下,你的xx只有一个值啊,我也就直接改成x做图了。因为你的yy也是由x计算的。

改成:
clc;clear;
x=[1.1389 1.0622 0.9822 0.934 0.9251 0.9158];
y=[0.03 1 5.03 15.05 19.97 30.3];
myfunc=inline('-beta(1)*log(x+beta(2))-beta(3)','beta','x');
beta=nlinfit(x,y,myfunc,[0 0 0]);
k=beta(1),a=beta(2),b=beta(3)
%test the model
xx=min(x):max(x);
yy=-k*log(x+a)-b;
plot(x,y,'o',x,yy,'r')
黎仙书云英
2020-05-18 · TA获得超过3498个赞
知道大有可为答主
回答量:3174
采纳率:26%
帮助的人:387万
展开全部
%
By
lyqmath
clc;
clear
all;
close
all;
X=[4
7;
8
7;
12
7;
16
7;
4
28;
8
28;
12
28;
16
28;
4
60;
8
60];
Z=[34,5,12,34,27,49,40,45,23,67]';
fun
=
@(beta,
x)
beta(1)*x(:,
1)
+
beta(2)*x(:,
2)
+
beta(3);
beta0
=
[1;
1;
1];
beta
=
nlinfit(X,Z,fun,beta0);
[xt,
yt]
=
meshgrid(linspace(min(X(:,
1)),
max(X(:,
1))),
linspace(min(X(:,
2)),
max(X(:,
2))));
zt
=
fun(beta,
[xt(:)
yt(:)]);
zt
=
reshape(zt,
size(xt,
1),
size(xt,
2));
figure;
hold
on;
box
on;
view(3);
plot3(X(:,
1),
X(:,
2),
Z,
'r+');
mesh(xt,
yt,
zt);
title(sprintf('By
lyqmath
拟合结果:z
=
%.3f*x
+
%.3f*y
+
%.3f',
beta(1),
beta(2),
beta(3)),
'FontWeight',
'Bold',
'Color',
'r');
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式