24小时热门版块排行榜    

查看: 901  |  回复: 0

xxz903

金虫 (小有名气)

[求助] matlab数据拟合求助!求出来的是复数 应该怎么修改?

function F=unique(x,xdata)  %x=[]
t12=x(1);
t21=x(2);
q1=x(3);
q2=x(4);
r1=x(5);
r2=x(6);
h=x(7);
m=xdata;
z=10;
x1=m./(m+h);
x2=1-x1;
o1=x1*r1./(x1*r1+x2*r2);
o2=x2*r2./(x1*r1+x2*r2);
b1=x1*q1./(x1*q1+x2*q2);
b2=x2*q2./(x1*q1+x2*q2);
l1=0.5*z*(r1-q1)-(r1-1);
l2=0.5*z*(r2-q2)-(r2-1);
y1=log(o1./x1)+0.5*z*q1*log(b1./o1)+o2*(l1-r1*l2/r2)-q1*log(b1+b2*t21)...
     +b2*q1.*(t21./(b1+b2*t21)-t12./(b2+b1*t12))-log(r1/r2)...
     -05*z*q1*log(q1*r2/(q2*r1))-(l1-r1*l2/r2)+q1*log(t21)-q1*(1-t12);
y2=log(o2./x2)+0.5*z*q2*log(b2./o2)+o1*(l2-r2*l1/r1)-q2*log(b2+b1*t12)...
     +b1*q2.*(t12./(b2+b1*t12)-t21./(b1+b2*t21))-log(r2/r1)...
     -05*z*q2*log(q2*r1/(q1*r2))-(l2-r2*l1/r1)+q2*log(t12)-q2*(1-t21);
F=[y1,y2];
end


function xxz2
data=[
0.1        -0.673344553        -0.003214304
0.2        -0.783071888        -0.005447496
0.3        -0.841647189        -0.008713882
0.4        -0.869884359        -0.010990339
0.5        -0.884307686        -0.014309599
0.6        -0.889162064        -0.018687569
0.7        -0.889162064        -0.02207116
0.8        -0.88673193        -0.025484701
0.9        -0.879476759        -0.029975034
1        -0.869884359        -0.038731848
1.2        -0.850971266        -0.042636996
1.4        -0.830113036        -0.051995295
1.6        -0.807436327        -0.061533872
1.8        -0.783071888        -0.071257081
2        -0.759286983        -0.081169452
2.5        -0.701179352        -0.107972916
3        -0.650087691        -0.136153773
3.5        -0.599656837        -0.165810242
4        -0.553385238        -0.197052419
4.5        -0.512493681        -0.227286842
5        -0.47320876        -0.260553522];
%xdata=data(:,1);  %Im
%ydata=data(:,2:3);  %
%x0=ones(1,7);    %t12,t21,q1,q2,r1,r2,h
%options= optimset('MaxFunEvals',5000,'Maxiter',1000);
  %lb=[10,20,0,0];
  %ub=[10000,10000,100,1000];
%lb=[];
%ub=[];
%[x,resnorm]=lsqcurvefit(@unique,x0,xdata,ydata,lb,ub,options)
%y=unique(x,xdata);
%plot(xdata,ydata,'g',xdata,y,'r')
%end
xdata=data(:,1);  %Im
ydata=data(:,2:3);  %
options= optimset('MaxFunEvals',5000,'Maxiter',1000);
lb=-ones(1,7);
ub=ones(1,7);
t=1;
for i=1:1:101
x0=rand(1,7);    %t12,t21,q1,q2,r1,r2,h
[x(t,,resnorm(t)]=lsqcurvefit(@myfun,x0,xdata,ydata,lb,ub,options);
t=t+1;
end
m=find(resnorm==min(resnorm));
xm=x(m,
y=myfun(xm,xdata);
plot(xdata,ydata,'g',xdata,y,'r')
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

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