matlab非线性拟合问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 18:33:08
已知x和t的一组数据,
t=0:17;
x=[26.41 26.94 27.46 27.99 28.51 29.04 30.48 31.91 33.35 34.78 36.22 37.66 39.09 40.53 41.76 42.99 43.90 44.94];
如何通过matlab拟合方程x=(k/(d+b*exp(-a*t)))^(1/c)
根据这组数据拟合出k,d,b,a,c的值
如果满意会追加分数,谢谢
greatdju兄弟,太厉害了啊。能增加个问题:就是求出拟合的相关系数吗?

clear;clc;
A=' k d b a c';
t=0:17;
x=[26.41 26.94 27.46 27.99 28.51 29.04 30.48 31.91 33.35 34.78 36.22 37.66 39.09 40.53 41.76 42.99 43.90 44.94];
opt=optimset('display','off');
f=@(p,t)(p(1)./(p(2)+p(3)*exp(-p(4)*t))).^(1/p(5));
plot(t,x,'ko');hold on;
p=fminsearch(@(p)sum((f(p,t)-x).^2),ones(1,5),opt);
cc=corrcoef(t,f(p,t));
disp('estimated by fminsearch:');disp(A);disp(p);disp('correlation coefficient is:');disp(cc(2));
h=ezplot(@(t)f(p,t),[0,17]);
set(h,'linestyle',':','color','r')
p=lsqcurvefit(f,ones(1,5),t,x,[],[],opt);
cc=corrcoef(t,f(p,t));
disp('estimated by lsqcurvefit:');disp(A);disp(p);disp('correlation coefficient is:');disp(cc(2));
ezplot(@(t)f(p,t),[0,17]);
legend('original data','estimated by fminsearch','estimated by lsqcurvefit',&