matlab中指数模型函数拟合

2024-05-13

1. matlab中指数模型函数拟合

clc
clear
close all
x=[0,100,200,300,400,500];
y=[1,0.62,0.40,0.21,0.18,0.12];
xx=x(2:end);
yy=y(2:end);
z=log(yy)./xx;
c=polyfit(xx,z,1);
a=c(1)
b=c(2)
ny=exp(a*x.^2+b*x);
plot(x,y,'r*')
hold on
ezplot(['exp(',num2str(a),'*x.^2+',num2str(b),'*x)'],[0 500 min(y) max(y)])
xlabel('x')
ylabel('y')
legend('原始数据散点图','拟合后函数曲线图')


运行结果

a =

    1.374119463200583e-006


b =

  -0.005030534633423

matlab中指数模型函数拟合

2. matlab指数拟合

指数函数:( y = exp(a + b*x))
 
>> x = [2001 2002 2003 2004 2005 2006 2007 2008 2009];
y = [21.5   15.9 11.8 8.7   6.5   4.8   3.5   2.6   2.0];
y=log(y');
d = [1 1 1 1 1 1 1 1 1]; 
a=[d;x];
b = a*y;
a=a*a';
c=ab
 
c =
   601.9448
   -0.2993
 
%所以,拟合函数为 y = exp(601.9448 - 0.2993*x)
 
%根据拟合函数求估测值
>>  x = [2010, 2011, 2012, 2013,  2014]
 exp(601.9448 - 0.2993*x)
ans =
1.4216    1.0539    0.7813    0.5792    0.4294

3. 求大神帮忙matlab拟合已知函数系数,写下步骤说明

对于线性回归方程,可以用regress()函数很容易得到回归系数。具体操作方法如下:

运行结果
a=2.2715,b=1.6649,c=0.18675,d=-11.805
R^2=0.99132

求大神帮忙matlab拟合已知函数系数,写下步骤说明

4. matlab拟合系数

z=8.1038 -0.0060x+ 0.0019y

5. matlab指数函数拟合

拟合 x=0.25,0.5,1,1.5,2,3,4,6,8 y=19.21,18.15,15.36,14.10,12.98,9.32,7.45,5.24,3.01
MATLAB拟合工具箱 cftool 用法及实例:1、数据准备:
我们以一组多项式数据为例,进行示例,假如多项式是y=4x^3+3x^2+2产生的数据,x取0到3之间间隔为0.3的数。

2、调用工具箱:
关于如何调用工具箱我在其他经验中有详细的介绍,有兴趣的可以查看。这里我们用命令cftool进行调用拟合工具箱,在MATLAB主窗口中输入 cftool 回车可以看到如下拟合工具箱界面

3、拟合操作步骤:
首先我们将要拟合的数据选入到工具箱中,如下图,在红圈处,点击向下三角,分别将要拟合的x y 选入,然后点击右侧的最上方的下三角,然后选择polynomial( 多项式),下面的degree是阶数,也就是x的最高次数,选择不同的degree,在图的左下角是拟合的结果,包括拟合的系数以及方差相关系数等,右侧是数据点,以拟合曲线。

matlab指数函数拟合

6. matlab指数函数拟合

拟合函数表达式y=a*exp(b+cx)
式中a=0.06154920769, b=-3.18125203, c=7.822374803
拟合度0.9725(相关系数)

7. matlab指数函数拟合

%lny=lna+b*x^2,也就是两边取对数,化成线性形式,因变量是ln(y),自变量是x^2
x=[-2.8 -2.6 -2.4 -2.2 -2 -1.8 -1.6 -1.4 -1.2 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8];
y=[26 31 36 42 50 59 71 82 99 116 134 149 163 172 175 172 163 149 134 116 99 82 71 59 50 42 36 31 26];
y_ln=log(y)';
x2=(x.^2)';
linear_fun=fit(x2,y_ln,'poly1');
figure
plot(linear_fun,x2,y_ln);
b=exp(linear_fun.p1)
a=linear_fun.p2
ypre=a*exp(b*x.^2);
figure
plot(x,y,'*',x,y,'-o');
最后结果是
b =
    0.7804
a =
    5.0215

matlab指数函数拟合

8. matlab指数函数拟合

我觉得你选择的模型都有点问题,你可以画个散点图看看就能发现,对数函数拟合可能更好。

clc;
clear all;
x=[0.05842 0.058614 0.058807 0.059001 0.059194 0.059388 0.060356 0.061324 0.062292 0.06326 0.064228 0.065196 0.066164 0.067132 0.0681 0.069];

y=[102.001 152.578 172.593 186.007 196.29 204.706 233.329 251.828 265.735 276.96 286.405 294.577 301.787 308.244 314.092 319.077];

myfun=@(A,x)A(1)*log(A(2)*x+A(3))+A(4);

[Af,R,J]=nlinfit(x,y,myfun,[0.5,0.5,0.5,0.5]);

yf=myfun(Af,x);

plot(x,y,'*r',x,yf,'-ob');
legend('实际值','预测值');
xlabel('x');
ylabel('y');

一些数值结果我就不放出来了,你运行程序就能得到结果。