用matlab拟合一组数据,要求得出函数表达式

2024-05-02 03:53

1. 用matlab拟合一组数据,要求得出函数表达式

根据给定的数据,我们可以假定函数表达式为
y=b1+b2*x+b3*x^2+b4*x^3+b5*x^4;
所以上述函数可以用matlab的regress()多元线性回归分析函数来拟合。实现过程如下:
A=[1.75,0.26;2.25,0.32;2.5,0.44;2.875,0.57;2.686,0.50;2.563,0.46];
x=A(:,1),y=A(:,2)
X=[ones(length(y),1),x,x.^2,x.^3,x.^4];
b=regress(y,X)
x1=linspace(1.5,3,50);
y1=b(1)+b(2)*x1+b(3)*x1.^2+b(4)*x1.^3+b(5)*x1.^4;
plot(x,y,'k*',x1,y1,'r-')
grid on
xlabel('x'),ylabel('y')
运行结果

用matlab拟合一组数据,要求得出函数表达式

2. 用matlab拟合一组数据,要求得出函数表达式

你好!以下是拟合代码和拟合结果:
clc;clear allx=[1.096 2.193 3.289 4.385 5.481 6.577 7.673 8.769...    9.865 10.961 12.057 13.153 14.249 15.345 16.441...    17.537 18.633 19.729 20.825 21.921 23.017 24.113...    25.209 26.305 27.401 28.497 29.593 30.689 31.785...    32.881 33.977 35.073 36.169 37.265 38.361...    39.457];y=[2.15 2.27 2.49 2.73 3.02 3.3 3.57 3.88 4.22 4.57...    4.88 5.2 5.48 5.75 5.97 6.17 6.27 6.32 6.27...    6.17 6 5.77 5.5 5.23 4.9 4.58 4.27 3.95 3.62...        3.32 2.98 2.7 2.48 2.3 2.17 2.13];p=polyfit(x,y,4);%四次拟合plot(x,y,'r--')hold ony1=polyval(p,x);%得出拟合结果plot(x,y1,'b-')xlabel('x')ylabel('y')legend('拟合前','拟合后')

3. 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中指数模型函数拟合

4. 关于matlab 数据拟合 ,没有经验公式,不知道是几次的函数,该如何拟合?

不管是什么程序(matlab或是excel),你必须得告许程序目标拟合公式的形式。这里的形式,是指你的公式是多项式型、对数型、三角形或其它的形式,但是这个公式里面有待定的系数,而这个系数就是通过拟合得到的。
     还有就是数据拟合,一般采用最小二乘的方法,这种方法并不是所有形式的公式都可以拟合。如果你的公式比较复杂,比如上说是一个积分形式,并且这个积分还不能显示的积出来,需要数值积分才可以积出来的话,用最小二乘法就不行了,这时,matlab是没有现成的函数来进行拟合的,这时就需要自己编程序来实现,比如可以运用“黄金分割法”、“Powell优化”等方法来实现。
    但,如你所提的问题,多项式是可以拟合的,多项式拟合也是最基本的数据拟合。可是呢,你又不知这个多项式是多少次的,这时候就需要根据你对已有数据观察加以判断了。你可以先假定是N次的,然后根据拟合的效果看是否需要更改。数据拟合并没有标准答案,只要你拟合出来的曲线和已有的数据符得相对比较好就行了。
   最后,希望我的回答可以帮助你。也希望你能采纳我的回答。

5. 下面这个问题如何用matlab指数函数拟合? 求代码谢谢

fun=inline('a(1)+a(2)*exp(-a(3)*t)','a','t');    %建立函数t=[14.57 6.05 4.57 3.54 2.89 2.45 2.12 1.89 1.7 1.55 0.4 0.41 0.43 0.44 0.43 0.43];t=[0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75];a=lsqcurvefit(fun,[0,0,0],t,t);    %拟合hold on;plot(t,t,'bo');    %画原始数据点  t0=min(t):max(t);t0=fun(a,t0);plot(t0,t0,'r');  %画拟和曲线hold off;disp(a)  %显示a、b、r参数的值【摘要】
下面这个问题如何用matlab指数函数拟合?  求代码谢谢
【提问】
fun=inline('a(1)+a(2)*exp(-a(3)*t)','a','t');    %建立函数
t=[14.57 6.05 4.57 3.54 2.89 2.45 2.12 1.89 1.7 1.55 0.4 0.41 0.43 0.44 0.43 0.43];
t=[0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75];
a=lsqcurvefit(fun,[0,0,0],t,t);    %拟合
hold on;plot(t,t,'bo');    %画原始数据点  
t0=min(t):max(t);
t0=fun(a,t0);
plot(t0,t0,'r');  %画拟和曲线
hold off;disp(a)  %显示a、b、r参数的值【回答】

下面这个问题如何用matlab指数函数拟合? 求代码谢谢

6. 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,在图的左下角是拟合的结果,包括拟合的系数以及方差相关系数等,右侧是数据点,以拟合曲线。

7. 关于用MATLAB拟合一组数据,得到函数的表达式

这个太难了,或者说是有太多的不确定性
因为连一个大概的函数形式都没有给出来
也就是说可能性太多,这组数据可以拟合出无数多种函数结果

如果什么函数形式都不给出的话,或者用多项式拟合吧

下面是尝试用11次多项式拟合你的数据
x=[9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39];
y=[9,12,18,21,12,26,29,36,50,101,192,245,233,117,28,9];
p=polyfit(x,y,11);

xx=linspace(9,39,100);
yy=polyval(p,xx);

plot(x,y,'o');hold on
plot(xx,yy,'r');hold off
legend('数据','拟合','location','northwest');
title(poly2str(p,'x'));



如果是正态分布
x=[9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39];
y=[9,12,18,21,12,26,29,36,50,101,192,245,233,117,28,9];
fun=@(p,x) p(1)*exp(-(x-p(2)).^2./2/p(3)^2);
p=nlinfit(x,y,fun,[250 32 10]);

xx=linspace(9,39,100);
yy=fun(p,xx);

plot(x,y,'o');hold on
plot(xx,yy,'r');hold off
legend('数据','拟合','location','northwest');


其中得到的p是有3个数的向量
函数形式是

p(1)*exp(-(x-p(2)).^2./2/p(3)^2)

p(1)是幅度,p(2)是中心横坐标,p(3)是标准差

关于用MATLAB拟合一组数据,得到函数的表达式

8. 怎样用matlab指数函数拟合

拟合函数表达式:y=a*exp(b+cx)
式中a=0.06154920769,
b=-3.18125203,
c=7.822374803
拟合度0.9725(相关系数)
用V=A(1)*exp(A(2)*I)+A(3)*exp(A(4)*I)模型比较好。
A = nlinfit(X,Y,myfun,[700 -0.01 -700 -1 ])
I=min(X):0.1:max(X);
V=A(1)*exp(A(2)*I)+A(3)*exp(A(4)*I);
plot(X,Y,'o',I,V)
结果:A =668.9571 -0.0688 -656.7991 -1.0321

意义
a>1时,Y随X增大而增大,先快后慢;0<a<1时,Y随X增大而减少,先快后慢。当以Y和lnX绘制的散点图呈直线趋势时,可考虑采用对数函数描述Y与X之间的非线性关系,式中的b和a分别为斜率和截距。
曲线直线化是曲线拟合的重要手段之一。对于某些非线性的资料可以通过简单的变量变换使之直线化,这样就可以按最小二乘法原理求出变换后变量的直线方程,在实际工作中常利用此直线方程绘制资料的标准工作曲线,同时根据需要可将此直线方程还原为曲线方程,实现对资料的曲线拟合。
以上内容参考:百度百科-曲线拟合
最新文章
热门文章
推荐阅读