24小时热门版块排行榜    

查看: 465  |  回复: 1

flyinuniverse58

木虫 (正式写手)


[交流] 【求助】matlab 拟合问题

自变量t是时间,一维数组;
因变量c是浓度,包含2种,一个是料液相浓度,另一个是接受相浓度,二维数组。
c1=g(K1,K2,t), c2=G(K1,K2,t);  g和G是不同的函数。
现在有实验数据t和c=[c1 c2];

请问如何在matlab中编程对参数K1,K2进行非线性拟合? 注意,K1,K2在c1,c2中都出现了,所以2个函数需要同时拟合。我在用nlinfit函数时发现好像只能对一个因变量进行拟合。

敬请赐教!谢谢
回复此楼

» 猜你喜欢

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

» 抢金币啦!回帖就可以得到:

查看全部散金贴

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

lidaxue

木虫 (正式写手)


flyinuniverse58(金币+10):虽然和我的目标有些距离,但还是感谢你为我提供了思路(我在题目中说了y是2个不同的函数,不是x) 2010-11-19 14:50:25
flyinuniverse58(金币+10):没人回复了,都给你吧,谢谢 2010-12-23 08:10:11
请楼主 依葫芦画瓢,保证算的出来!!

1  设定目标函数. (M函数书写)% 可以是任意的
例如:

function f=mydata(a,data)   %y的值目标函数值 或者是第三维的,a=[a(1) ,a(2)] 列向量
x=data(1,;                          %data 是一2维数组,x=x1
y=data(2,;                          %data 是一2维数组,x=x2  
f=a(1)*x+a(2)*x.*y;             %这里的a(1), a(2)为目标函数的系数值。 f的值相当于ydata的值

2  然后给出数据xdata和ydata的数据和拟合函数lsqcurvefit

例如:
x1=[1.0500 1.0520 1.0530 1.0900 1.0990 1.1020 1.1240 1.1420...
    1.1490 1.0500 1.0520 1.0530 1.0900 1.0990 1.1020 1.1240 1.1420 1.1490];
x2=[3.8500 1.6500 2.7500 5.5000 7.7000 3.3000 4.9500 8.2500 11.5500...
    1.6500 2.7500 3.8500 7.7000 3.3000 5.5000 8.2500 11.5500 4.9500];
ydata=[56.2000 62.8000 62.2000 40.8000 61.4000 57.5000 44.5000 54.8000...
       53.9000 64.2000 62.9000 64.1000 63.0000 62.2000 64.2000 63.6000...
       52.5000 62.0000];
data=[x1;x2];                     %类似于将x1 x2整合成一个2维数组。
a0= [-0.0014,0.07];
option=optimset('MaxFunEvals',5000);
format long;
[a,resnorm]=lsqcurvefit(@mydata,a0,data,ydata,[],[],option);
yy=mydata(a,data);
result=[ydata' yy' (yy-ydata)']
%  a的值为拟合的目标函数的参数值 利用lsqcurvefit进行拟合的 它完整的语法形式是:
% [x,resnorm,residual,exitflag,output,lambda,jacobian] =lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)
2楼2010-11-19 10:19:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 flyinuniverse58 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见