如何用matlab进行二次指数拟合?拟合模型为y=exp(a(1)*x^2+a(2)*x+a(3))+a(4) 数据如下:
x=1:1:11;y=[1306137316571919218123362525.12816.92950.72959.13603.0];急!先谢!模型中x后面少了一个点,...
x=1:1:11;
y=[1306 1373 1657 1919 2181 2336 2525.1 2816.9 2950.7 2959.1 3603.0];
急!先谢!
模型中x后面少了一个点,问题已经解决了! 展开
y=[1306 1373 1657 1919 2181 2336 2525.1 2816.9 2950.7 2959.1 3603.0];
急!先谢!
模型中x后面少了一个点,问题已经解决了! 展开
2个回答
展开全部
x = 1:1:11;
y = [1306 1373 1657 1919 2181 2336 2525.1 2816.9 2950.7 2959.1 3603.0] ;
opts = fitoptions('Method','Nonlinear','Normalize','On');
ftype = fittype('exp(a * x.^2 + b * x + c)+d','options',opts);
[fresult,gof] = fit(x',y',ftype)
plot( x, fresult(x), x, y, '* ')
y = [1306 1373 1657 1919 2181 2336 2525.1 2816.9 2950.7 2959.1 3603.0] ;
opts = fitoptions('Method','Nonlinear','Normalize','On');
ftype = fittype('exp(a * x.^2 + b * x + c)+d','options',opts);
[fresult,gof] = fit(x',y',ftype)
plot( x, fresult(x), x, y, '* ')
追问
程序也很给力!灰常感谢了!
追答
就选本答案为标准答案吧! ):(
参考资料: http://hi.baidu.com/zzz700/blog/item/f313a3f5869659b5a40f52d7.html
展开全部
function my11
x=1:11;
y=[1306 1373 1657 1919 2181 2336 2525.1 2816.9 2950.7 2959.1 3603.0];
plot(x,y,'o')
hold on
A=nlinfit(x,y,@fun,[0.04 0.6 -4.3 1800]);%%%方程系数矩阵
disp(A)
xx=min(x):0.1:max(x);
yy=exp(A(1)*xx.^2+A(2)*xx+A(3))+A(4);%%%方程形式
plot(xx,yy)
end
function y=fun(A,x)
y=exp(A(1)*x.^2+A(2)*x+A(3))+A(4);
end
x=1:11;
y=[1306 1373 1657 1919 2181 2336 2525.1 2816.9 2950.7 2959.1 3603.0];
plot(x,y,'o')
hold on
A=nlinfit(x,y,@fun,[0.04 0.6 -4.3 1800]);%%%方程系数矩阵
disp(A)
xx=min(x):0.1:max(x);
yy=exp(A(1)*xx.^2+A(2)*xx+A(3))+A(4);%%%方程形式
plot(xx,yy)
end
function y=fun(A,x)
y=exp(A(1)*x.^2+A(2)*x+A(3))+A(4);
end
追问
很给力,但还有点不懂,就是方程系数矩阵中的系数[0.04 0.6 -4.3 1800]是如何确定的?
灰常感谢了先!
追答
有个曲线拟合工具箱,cftool,我做拟合时就是在那里先确定系数,在编代码的,你可以用一下,那里面有好多系统函数,也可以自定义函数,你找一下自定义选项,有问题再说
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询