24小时热门版块排行榜    

查看: 1261  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

Jounry-Jo

银虫 (小有名气)

[求助] 急~~~~~~~求利用MATLAB或1STOPT非线性拟合两组数据 已有1人参与

1stopt5.0是试用版不能拟合三个参数以上的非线性拟合,matlab试了好久都没能出正确数据,不知是否编程有问题。着急得数据分析,希望有软件的大侠帮帮忙。不胜感激
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 拟合数据和公式.xlsx
  • 2015-06-27 22:14:21, 14.02 K

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
Jounry-Jo: 金币+7, ★★★很有帮助, 谢谢 2015-06-28 20:21:16
fegg7502: 金币+1, 鼓励交流 2015-06-29 08:36:56
用1.5老版本的都行吧:

第一组:
均方差(RMSE):1.07205511441145
残差平方和(SSE):48.2706910701012
相关系数(R): 0.939291118069207
相关系数之平方(R^2): 0.8822678044837
确定系数(DC): 0.882147234885844
卡方系数(Chi-Square): 1.7441087621366
F统计(F-Statistic): 61.0931783656144

参数        最佳估算
----------        -------------
a21        11.9497208389958
a31        17.4598494080349
a12        -6.19190121843902
a32        0.00659902374601305
a13        4.12126008280832
a23        -0.296670034331323

第二组:
均方差(RMSE):0.973759323354068
残差平方和(SSE):34.135459913483
相关系数(R): 0.97164462582794
相关系数之平方(R^2): 0.944093278900318
确定系数(DC): 0.944088417392726
卡方系数(Chi-Square): 1.25185088936219
F统计(F-Statistic): 107.312290588236

参数        最佳估算
----------        -------------
a21        7.4558436152277
a31        13.1441376631054
a12        6.26895600341922
a32        3.27183196434597
a13        -3.59060566306702
a23        3.09901050411686
3楼2015-06-28 16:11:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

wuhanfeng

新虫 (小有名气)

有初始值吗?或者大概有个范围?
2楼2015-06-28 12:16:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Jounry-Jo

银虫 (小有名气)

引用回帖:
2楼: Originally posted by wuhanfeng at 2015-06-28 12:16:22
有初始值吗?或者大概有个范围?

希望R2最好能9.5以上,最好的是四个参数值都是几千,初值可以设500-600。
实在不行的话,另一种情况是四个参数值都很小。谢谢
4楼2015-06-28 20:18:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

muzili2008

木虫 (小有名气)


fegg7502: 金币+1, 鼓励交流 2015-07-07 09:13:30
引用回帖:
4楼: Originally posted by Jounry-Jo at 2015-06-28 20:18:52
希望R2最好能9.5以上,最好的是四个参数值都是几千,初值可以设500-600。
实在不行的话,另一种情况是四个参数值都很小。谢谢...

clc
clear
% http://muchong.com/bbs/viewthread.php?tid=9102854&fpage=4&target=blank
data = xlsread('data.xlsx');
x1 = data(:,1);
x2 = data(:,2);
x3 = data(:,3);
y  = data(:,4);
beta0 = ones(6,1)*1e-5;
options = optimset('TolFun'    , 1e-15, ...
                   'TolX'      , 1e-15, ...
                  'MaxFunEvals', 1e5, ...
                  'MaxIter'    , 1e4 );
[X,RESNORM,RESIDUAL,EXITFLAG,OUTPUT,LAMBDA,JACOBIAN]= ...
    lsqnonlin(@OptObjFunc,beta0,[],[],options,x1,x2,x3,y);

y_err =  OptObjFunc(X,x1,x2,x3,y);
y_cal = y-y_err;
plot(y_cal,y,'r*')
axis([0 20 0 20])
% ===================================
function ans = OptObjFunc(param,x1,x2,x3,y)
% [a12,a21,a13,a31,a23,a32] = beta;
m = size(x1,1);
y_cal = zeros(m,1);
for i = 1:m
    y_cal(i) = nrtl3comp(x1(i),x2(i),x3(i),param);
end
ans = y-y_cal;
% ============================================
function y = nrtl3comp(x1,x2,x3,param)
a12 = param(1);
a21 = param(2);
a13 = param(3);
a31 = param(4);
a23 = param(5);
a32 = param(6);
y=(a21*exp(-0.3*a21)*x2+a31*exp(-0.3*a31)*x3)/(x1+exp(-0.3*a21)*x2+exp(-0.3*a31)*x3) ...
-(a21*exp(-0.3*a21)*x2+a31*exp(-0.3*a31)*x3)/(x1+exp(-0.3*a21)*x2+exp(-0.3*a31)*x3) ...
*x1/(x1+exp(-0.3*a21)*x2+exp(-0.3*a31)*x3)+ ...
a12-(a12*exp(-0.3*a12)*x1+a32*exp(-0.3*a32)*x3)/ ...
(x2+exp(-0.3*a12)*x1+exp(-0.3*a32)*x3)*x2* ...
exp(-0.3*a12)/(x2+exp(-0.3*a12)*x1+exp(-0.3*a32)*x3)+a13 ...
-(a13*exp(-0.3*a13)*x1+a23*exp(-0.3*a23)*x2)/ ...
(x3+exp(-0.3*a13)*x1+exp(-0.3*a23)*x2)*exp(-0.3*a13)*x3/ ...
(x3+exp(-0.3*a13)*x1+exp(-0.3*a23)*x2)        ;


5.4478;6.184;-3.5576;13.645;-14.644;2.5835
5楼2015-07-06 22:43:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见