24小时热门版块排行榜    

查看: 2034  |  回复: 0

shidoudou

新虫 (初入文坛)

[求助] matlab 拟合优度的判断语句?

用matlab软件中的lsqnonlin 拟合了几条曲线,想判断拟合的好坏程度,可是lsqnonlin输出的是误差平方和及残差等,加上什么样的语句可以显示类似拟合优度R2,及平均相对误差这类的数据呢?谢谢~
   主程序:
format short
global Umax Ks Kp Y a Uo Ko D Ux Kx Ku Ki;
Ki=0.0005;Ku=0.0001;
k0=[0.2 0.5 0.1 10 0.01 0.01 0.01 0.1 0.01 0.01]; %参数的初始值
x0=[0.0514 0.250 0]; %菌体浓度、底物浓度和产物浓度的初始值
t1=[0 6 12 18 24 30 36 42 48 54 60 66]';%发酵时间的实验数据
tspan=[0 6 12 18 24 30 36 42 48 54 60 66 ]';%时间间隔
%yexp实验数据[菌体浓度x1、底物浓度x2和产物浓度x3]
yexp=[[0.0514 0.0711 0.0997 0.1887 0.3478 0.6634 0.8711 1.1023 1.2336 1.4239 1.5849 1.6739];[0.25 0.2447 0.2366 0.2258 0.2196 0.203 0.1872 0.1698 0.1453 0.1124 0.0855 0.0608];[0 0.0012 0.0021 0.0039 0.0088 0.0137 0.0183 0.0268 0.0361 0.0438 0.0557 0.0643]]';
lb=[0 0 0 0 0.0001 0.0116 0.001 1 0.001 0.001];ub=[1 10 13 50 50 2 1 1.001 1 1];%参数的下、上限
[k,resnorm,residual,exitflag,output,lambda,jacobian]=lsqnonlin(@ObjFunc4LNL83,k0,lb,ub,[],x0,yexp);%非线性拟合
y1=[yexp(:,1)];y2=[yexp(:,2)];y3=[yexp(:,3)]';
[t4plot,x4plot]=ode45(@kineticseqs83,[0 100],x0,[],k);
plot(t1,y1,'b*',t4plot,x4plot(:,1),'k-'),xlabel('T(h)'),ylabel('Cx/(g/L)');
figure
plot(t1,y2,'g*',t4plot,x4plot(:,2),'k-'),xlabel('T(h)'),ylabel('Cs/(mmol/L)');
figure
plot(t1,y3,'r*',t4plot,x4plot(:,3),'k-'),xlabel('T(h)'),ylabel('Cp/(mmol/L)');
disp(k)
========================================
function dxdt=kineticseqs83(t,x,k)  %模型方程
global Umax Ks Kp Y a Uo Ko D Ux Kx Ku Ki
Umax=k(1); Ks=k(2); Kp=k(3); Y=k(4); a=k(5); Uo=k(6); Ko=k(7); D=k(8); Ux=k(9); Kx=k(10);
  dxdt1=Umax*x(2)*x(1)*(1-Kp*x(3))/(Ks+x(2));
   if dxdt1<0
      dxdt1=0;
  end
  dxdt3=a*dxdt1+Uo*x(2)*x(1)/(Ko+x(2))*(Ki*x(1)/(Ki+x(3)));
  if dxdt3<0
      dxdt3=0;
  end
  dxdt2=-1/Y*dxdt1-Ux*x(2)*x(1)/(Kx+x(2))*(Ku*x(1)/(Ku+x(3)))-D*dxdt3;
  dxdt=[dxdt1;dxdt2;dxdt3];
==========================================
function f=ObjFunc4LNL83(k,x0,yexp)
tspan=[0 6 12 18 24 30 36 42 48 54 60 66 ];
[t1,x]=ode45(@kineticseqs83,tspan,x0,[],k);
y(:,1)=x(:,1);y(:,2)=x(:,2);y(:,3)=x(:,3);
f1=y(: ,1)-yexp(: ,1);f2=y(: ,2)-yexp(: ,2);f3=y(: ,3)-yexp(: ,3);
f=[f1 f2*5 f3*10];
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

相关版块跳转 我要订阅楼主 shidoudou 的主题更新
信息提示
请填处理意见