声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1406|回复: 2

[其他相关] 请朋友们帮我解决非线性拟合问题!非常感谢!

[复制链接]
发表于 2009-3-9 22:07 | 显示全部楼层 |阅读模式

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

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

x
请朋友们帮我解决非线性拟合问题!非常感谢!
这是我的数据拟合的程序,请大家帮忙解决!

建立函数如下:
function  diff=fit-simp(x,X,Y)
%
此函数被LSQNONLIN调用
% x 是包含等式系数的向量
% X 与 Y 是作为操作数传递给lsnonlin
A = x(1);
B = x(2);
diff = A. / (1+(A-1).*exp(-B.*X))-Y;

下面是脚本:

%定义你打算拟合的数据集合;
X=[-5 -2.01818 -1.81818 -1.23636 -1.01818 -0.85455 -0.01818 0.290909 0.690909 1];
Y=[1 1.025 1.160714 1.192857 1.064286 1.139286 1.232143 1.309322 1.427966 1.933333];
%
初始化方程系数;
X0=[1 1]';
%
设置用中等模式(memdium-scale)算法;
options=optimset('Largescale','off');
%
通过调用LSQNONLIN重现计算新的系数;
x=lsqnonlin(@fit_simp,X0,[],[],options,X,Y);
%
调用LSQNONLIN结果输出表明拟合是成功的;
Optimization terminated successfully:
Gradient in the search direction less than tolFun
Gradient less than 10*(tolFun+tolX)
%
绘制原始数据与新的计算的数据;
Y_new=x(1)/(1+(x(1)-1).*exp(-x(2).*X));
plot(X,Y,'+r',X,Y_new,'b');

请大家帮忙看一下 怎么解决这个问题! 谢谢!
回复
分享到:

使用道具 举报

发表于 2009-3-10 08:34 | 显示全部楼层
遇到什么问题了呀?从里面看不出来哦!
 楼主| 发表于 2009-3-10 09:33 | 显示全部楼层

回复 沙发 octopussheng 的帖子

这是两个M文件。
运行第一个M文件时出现:Error: Function definitions are not permitted at the prompt or in scripts.
运行第二个M文件时出现:??? Undefined variable "Untitled2" or class "Untitled2.m".
请大家帮忙看一下,本人刚刚开始接触Matlab,还有很多要学习的,但是非线性拟合这块教程里也没有提到!谢谢了!
function  diff=fit-simp(x,X,Y) 请问这个函数定义有问题么?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-20 15:43 , Processed in 0.049508 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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