用MATLAB进行曲线拟合 我需要使用自定义表达式y=(a+b*x)*c^x,但是结果是一条水平的线,新手求教~

2024-11-18 08:36:00
推荐回答(2个)
回答(1):

把你邮箱给我,我把数据按照你的三个方程处理后的结果编写成文档发给你。
我做过拟合了,你那三个烂方程确实是直线。原因有二,第一你的方程本身确立的就不服从数据的分布规律,第二你看看CFtool里边的自定义函数,全是x的多少次方,而你却把x放在指数位置,可能工具箱对这种函数的处理不擅长。
我用y=a*b^x+c做了一次,效果还可以
Goodness of fit:
SSE: 3.967e+006
R-square: 0.9042
Adjusted R-square: 0.8929
RMSE: 483.1

回答(2):

你先用下面命令试一试看
x=[.......];
y=[.......];
fun1=inline('((1)*x^2+c(2)*x)*c(3).^x,'c','x'); %拟合函数 y=(a+b*x)*c^x
c=lsqcurvefit(fun1,[0,0],x,y) %求拟合系数
a=c(1)
b=c(2)
c=c(3)
如不行,可能你的数据不符合y=(a+b*x)*c^x的规律