lsqcurvefit拟合出现函数未定义是怎么回事!!!! 5

程序:functionf=curvefit_fun2(a,t)f=(a(1)/((1+(a(1)/60.2-1)*exp(-a(2)*(t-1954)))));%定义向量... 程序:function f=curvefit_fun2(a,t)
f=(a(1)/((1+(a(1)/60.2-1)*exp(-a(2)*(t-1954)))));
% 定义向量(数组)
x=1954:2016;
y=[60.2,61.5,62.8,64.6,66.0,67.2,66.2,65.9,67.3,69.1,70.4,72.5,74.5,76.3,78.5,80.7,83.0,85.2,87.1,89.2,90.9,92.4,93.7,95.0,96.259,97.5,98.705,100.1,101.654,103.008,104.357,105.851,107.5,109.3,111.026,112.704,114.333,115.823,117.171,118.517,119.85,121.121,122.389,123.626,124.761,125.786,126.743,127.627,128.453,129.227,129.988,130.756,131.448,132.129,132.802,133.450,134.091,134.735,135.404,136.072,136.782,137.462,138.271];
plot(x,y,'*',x,y); % 画点,并且画一直线把各点连起来
a0=[0.001,1]; % 初值
a=lsqcurvefit('f',a0,x,y);
disp(['a=' num2str(a)]); % 显示结果
拟合不出结果,
未定义函数或变量 'f'。

出错 lsqcurvefit (line 202)
initVals.F = feval(funfcn_x_xdata{3},xCurrent,XDATA,varargin{:});
展开
 我来答
lhmhz
高粉答主

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

向TA提问 私信TA
展开全部

运行你的程序存在以下问题:

1、a=lsqcurvefit('f',a0,x,y); 这句代码中调用自定义函数,应该是@curvefit_fun2,而不是‘f’。

2、自定义函数的表达式,应该用点运算符进行运算。

3、给出的初值(a0=[0.001,1]; )不合理,应该取a0=[165    0.03]; 

修改上述错误后运行可以得到如下结果

修改后的代码

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式