求助:函数模型:y=a*e^-x/m+b*e^-x/n+c,还有x和y的两组数据,求用Matlab拟合出参数a、b、c、m、n的程序 20
1个回答
展开全部
我这里用x向量代表a,b,c,m,n,楼主可对号入座
%%
close all;clear;clc;
F=@(x,xdata)(x(1)*exp(-xdata/x(2))+x(3)*exp(-xdata/x(4))+x(5));
xdata=[1 2 3 4 5];
ydata=[5 4 3 2 1];
x0=[1 1 1 1 1];
x=lsqcurvefit(F,x0,xdata,ydata)
%%
close all;clear;clc;
xdata=[1 2 3 4 5];
ydata=[5 4 3 2 1];
F=@(x)(x(1)*exp(-xdata/x(2))+x(3)*exp(-xdata/x(4))+x(5)-ydata);
x0=[1 1 1 1 1];
x=lsqnonlin(F,x0)
两个代码结果都是 5.5394 10.1713 8.3698 10.8647 -7.5688
需要提醒的是,如果拟合的函数选取不当,或者数据不够,或者数据杂乱无章的话,起点不同结果差别比较大
%%
close all;clear;clc;
F=@(x,xdata)(x(1)*exp(-xdata/x(2))+x(3)*exp(-xdata/x(4))+x(5));
xdata=[1 2 3 4 5];
ydata=[5 4 3 2 1];
x0=[1 1 1 1 1];
x=lsqcurvefit(F,x0,xdata,ydata)
%%
close all;clear;clc;
xdata=[1 2 3 4 5];
ydata=[5 4 3 2 1];
F=@(x)(x(1)*exp(-xdata/x(2))+x(3)*exp(-xdata/x(4))+x(5)-ydata);
x0=[1 1 1 1 1];
x=lsqnonlin(F,x0)
两个代码结果都是 5.5394 10.1713 8.3698 10.8647 -7.5688
需要提醒的是,如果拟合的函数选取不当,或者数据不够,或者数据杂乱无章的话,起点不同结果差别比较大
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询