kakalx 发表于 2009-7-23 20:09

关于lsqnonlin的问题

关于要拟合的函数:
function f=lxgjn(b)
a=load('090707.txt');
x=a(:,1);
y=a(:,2);
f=y-(b(0)+b(1).*x+b(2).*(1-exp(b(3).*x)));
一下脚本文件
clear
clc
b0=;
=lsqnonlin('lxgjn',b0);
为什么不行呢?
报错:
Error using ==> optim\private\lsqncommon
User supplied function ==> lxgjn
failed with the following error:
Attempted to access b(0); index must be a positive integer or logical.
Error in ==> lsqnonlin at 163
= ...
很少用这个函数,我不知道是什么原因。

[ 本帖最后由 kakalx 于 2009-7-23 21:20 编辑 ]

ChaChing 发表于 2009-7-23 20:31

matlab矩阵的index不能为零!

kakalx 发表于 2009-7-23 20:56

回复 沙发 ChaChing 的帖子

嗯,那我该怎么办呢?

ChaChing 发表于 2009-7-23 21:03

试试
f=y-(b(1)+b(2).*x+b(3).*(1-exp(b(4).*x)));

kakalx 发表于 2009-7-23 21:17

回复 地板 ChaChing 的帖子

还是报错;估计对初值是不有要求,造成不能运行。
chaching,
如果我不用lsqnonlin函数,我该怎么做,能获得这个待求多项式的表达式?

dingd 发表于 2009-7-23 22:40

看看这组结果如何?

参数最佳估算
b1= 25.112158616381
b2= 0.00471717814272614
b3= 1.00395547558027
b4= -0.0255216579223049

[ 本帖最后由 dingd 于 2009-7-23 22:41 编辑 ]

kakalx 发表于 2009-7-23 23:45

回复 6楼 dingd 的帖子

把你的程序能发一下吗?
页: [1]
查看完整版本: 关于lsqnonlin的问题