查看: 930|回复: 6|关注: 0

[已解决] 求大神帮忙,老是出现未定义函数或变量 'x'

[复制链接]

新手

8 麦片

财富积分


050


4

主题

8

帖子

0

最佳答案
本帖最后由 niangao 于 2019-1-3 20:36 编辑

用下面的方程对一组数据进行拟合求取参数的时候,老是出现“未定义函数或变量 'x'”,这是怎么回事啊?
函数y=c1+c2*exp(-0.002*c3*x),其中,c1、c2、c3是待定系数。
数据点:x=[1,2,3,4,5,6,7,8,9,10];
y=[3.5,3,2.6,2.3,2.1,1.9,1.7,1.6,1.5,1.4];
下面是具体的程序。
function y=fit_model_a(x,xd)
y=x(1)+x(2)*exp(-0.02*x(3)*xd);
clear all;
xd=[1,2,3,4,5,6,7,8,9];
yd=[3.5,3,2.6,2.3,2.1,1.9,1.7,1.6,1.5,1.4];
c0=[0,1,1];
c=lsqcurvefit('fit_model_a',c0,xd,yd)
plot(xd,yd,'r+');
hold on;
xp=linspace(min(xd),max(xd),200);
yp=fit_model_a(c,xp);
plot(xp,yp);


论坛优秀回答者

权威

9056 麦片

财富积分



9

主题

1万

帖子

1986

最佳答案
  • 关注者: 486
发表于 2019-1-3 20:29:52 | 显示全部楼层
x是9个数,y是10个数,能拟合?

新手

8 麦片

财富积分


050


4

主题

8

帖子

0

最佳答案
 楼主| 发表于 2019-1-3 20:34:50 | 显示全部楼层
本帖最后由 niangao 于 2019-1-3 20:35 编辑
jingzhaos 发表于 2019-1-3 20:29
x是9个数,y是10个数,能拟合?

嗯,是x写少了。应该是1到10的,但是我把10添上去了,还是显示未定义函数或变量'x'。

论坛优秀回答者

权威

9056 麦片

财富积分



9

主题

1万

帖子

1986

最佳答案
  • 关注者: 486
发表于 2019-1-3 20:47:55 | 显示全部楼层
本帖最后由 jingzhaos 于 2019-1-3 20:50 编辑
niangao 发表于 2019-1-3 20:34
嗯,是x写少了。应该是1到10的,但是我把10添上去了,还是显示未定义函数或变量'x'。 ...

如果是这样,那说明你不知道函数该怎么用。简单点,照下面来:
  1. x=1:10
  2. y=[3.5,3,2.6,2.3,2.1,1.9,1.7,1.6,1.5,1.4];
  3. fitnlm(x,y,'y~b1+b2*exp(-0.002*b3*x)',[0 1 1])
复制代码

如果按照你的函数,将函数那一部分单独保存。

新手

8 麦片

财富积分


050


4

主题

8

帖子

0

最佳答案
 楼主| 发表于 2019-1-3 20:51:42 | 显示全部楼层
jingzhaos 发表于 2019-1-3 20:47
如果是这样,那说明你不知道函数该怎么用。简单点,照下面来:

大神你好,我按照你的程序运行了下,还是一样的问题啊。我用的2014版的matlab,会不会是版本的问题啊?

论坛优秀回答者

权威

9056 麦片

财富积分



9

主题

1万

帖子

1986

最佳答案
  • 关注者: 486
发表于 2019-1-3 20:55:20 | 显示全部楼层 |此回复为最佳答案
niangao 发表于 2019-1-3 20:51
大神你好,我按照你的程序运行了下,还是一样的问题啊。我用的2014版的matlab,会不会是版本的问题啊? ...

快照1.png

新手

8 麦片

财富积分


050


4

主题

8

帖子

0

最佳答案
 楼主| 发表于 2019-1-3 21:10:17 | 显示全部楼层

谢谢大神,问题解决了。太感谢你了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表