声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1554|回复: 6

[编程技巧] 关于lsqnonlin的问题

[复制链接]
发表于 2009-7-23 20:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
关于要拟合的函数:
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=[10,10,10,10];
[b,Resnorm]=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
[x,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ...
很少用这个函数,我不知道是什么原因。

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

090707.txt

191 Bytes, 下载次数: 3

.m中的文件

回复
分享到:

使用道具 举报

发表于 2009-7-23 20:31 | 显示全部楼层
matlab矩阵的index不能为零!
 楼主| 发表于 2009-7-23 20:56 | 显示全部楼层

回复 沙发 ChaChing 的帖子

嗯,那我该怎么办呢?
发表于 2009-7-23 21:03 | 显示全部楼层
试试
f=y-(b(1)+b(2).*x+b(3).*(1-exp(b(4).*x)));
 楼主| 发表于 2009-7-23 21:17 | 显示全部楼层

回复 地板 ChaChing 的帖子

还是报错;估计对初值是不有要求,造成不能运行。
chaching,
如果我不用lsqnonlin函数,我该怎么做,能获得这个待求多项式的表达式?
发表于 2009-7-23 22:40 | 显示全部楼层
看看这组结果如何?

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

[ 本帖最后由 dingd 于 2009-7-23 22:41 编辑 ]
uh.jpg
 楼主| 发表于 2009-7-23 23:45 | 显示全部楼层

回复 6楼 dingd 的帖子

把你的程序能发一下吗?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-26 12:32 , Processed in 0.063211 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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