|
楼主 |
发表于 2009-3-9 21:38
|
显示全部楼层
请朋友们帮我解决非线性拟合问题!非常感谢!
这是我的数据拟合的程序,请大家帮忙解决!
建立函数如下:
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');
请大家帮忙看一下 怎么解决这个问题! 谢谢!
[ 本帖最后由 ChaChing 于 2009-3-9 21:59 编辑 ] |
|