matlab 模拟函数与数据相差太多是怎么回事

我的命令是这样的
x=[0 1.50E-02 3.00E-02 4.50E-02 6.00E-02 7.50E-02 9.00E-02 0.105 0.12 0.135 0.15 0.165 0.18 0.195 0.21 0.225 0.24 0.255 0.27 0.285 0.3];
y=[50.15 48.235 46.32 44.406 42.761 41.252 39.743 38.372 37.278 36.184 35.089 34.368 33.646 32.924 32.414 32.009 31.605 31.292 31.162 31.033 30.903];
myfunc=inline('beta(1)*exp(beta(2)*x)','beta','x');
beta=nlinfit(x,y,myfunc,[20 -8]);
a=beta(1),b=beta(2)
xx=linspace(min(x),max(x));
yy=a*exp(b*xx);
plot(x,y,'o',xx,yy,'r')
模拟的曲线与所给数据相差很多 最好帮我改一下 谢谢哦

这个问题我先给你分析一下,数据拟合首先需要给定你要拟合的公式的结构,像你的程序使用了指数函数,给定函数类型后,就可以进行拟合了,你的程序没有任何问题。

那么问题在哪里呢,是你选定的函数不好,就是说你使用指数函数拟合这个数据肯定就是这个样了。

如果没有特殊的要求,我建议一般使用多项式函数进行拟合!

下面的拟合可以看出结果很好的

x=[0 1.50E-02 3.00E-02 4.50E-02 6.00E-02 7.50E-02 9.00E-02 0.105 0.12 0.135 0.15 0.165 0.18 0.195 0.21 0.225 0.24 0.255 0.27 0.285 0.3];

y=[50.15 48.235 46.32 44.406 42.761 41.252 39.743 38.372 37.278 36.184 35.089 34.368 33.646 32.924 32.414 32.009 31.605 31.292 31.162 31.033 30.903];

p=polyfit(x,y,2);

yy=polyval(p,x);

figure;plot(x,y,'-r*',x,yy,'-b+')

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-09

General model Exp1:

     f(x) = a*exp(b*x)

Coefficients (with 95% confidence bounds):

       a =       47.81  (46.4, 49.23)

       b =      -1.762  (-1.959, -1.565)

Goodness of fit:

  SSE: 38.87

  R-square: 0.9485

  Adjusted R-square: 0.9458

  RMSE: 1.43

General model Exp2:

     f(x) = a*exp(b*x) + c*exp(d*x)

Coefficients (with 95% confidence bounds):

       a =       44.24  (42.5, 45.98)

       b =      -3.749  (-4.014, -3.485)

       c =        6.04  (4.238, 7.841)

       d =       3.376  (2.707, 4.045)

Goodness of fit:

  SSE: 0.08654

  R-square: 0.9999

  Adjusted R-square: 0.9999

  RMSE: 0.07135

matlab 模拟函数与数据相差太多是怎么回事
那么问题在哪里呢,是你选定的函数不好,就是说你使用指数函数拟合这个数据肯定就是这个样了。如果没有特殊的要求,我建议一般使用多项式函数进行拟合!下面的拟合可以看出结果很好的 x=[0 1.50E-02 3.00E-02 4.50E-02 6.00E-02 7.50E-02 9.00E-02 0.105 0.12 0.135 0.15 0.165 0...

matlab默认运算精度是多少?怎么控制运算精度?
matlab默认运算精度为双精度16位有效数字VPA和DIGITS可以设置计算精度,不过速度会受影响 追问 我没改计算精度,以毫米为单位的,用不同的计算方法,怎么最后相差2到4毫米?一种是全部带入一个式子;一种是分开,先计算出各个三角函数的运算,再带入后面的式子。差这么多正常吗? 追答 误差是会积累的,你可以用符号运算解...

matlab中如何以多行字符串形式读取txt文件
把names.txt文件放入matlab安装目录下work(默认搜索路径)文件夹下,试下:clc,clear a=textread('names.txt','%c');n=1;j=1;for i=1:length(a)x=a(i);if x~=','file(n,j)=x;j=j+1;else n=n+1;j=1;end end file mingzigeshu=n 结果:file = 'MARY''PATRICIA''LINDA''B...

可以用MATLAB做计算流体力学CFD的模拟吗?
有时候计算解产生了振荡,你不知道到底是模型的问题,还是程序的问题。这个时候Matlab的优势就很明显,交互式编程嘛,可以随时检查计算时中间变量,并且还有方便的绘图工具。在互联网技术中,可以分为前端与后端两部分,所以我想或许数值模拟也可采用类似这种方法。模型的一部分主要负责计算,这部分采用 C、C...

...的数据比较多,在命令窗口里显示不全,matlab怎么设置才能在命令窗口...
解决方法:1.你可以编个m文件保存数据,save 'b.txt' a-ascii 将数据保存到b.txt中,a为要保存数 据。或者 fid = fopen('test.txt','w');fprintf(fid,'%e\\n',data);fclose(fid);data就是你要输出的数据(比如是一个数组名)e是显示格式,具体的要看你自己想输出什么格式 2.在workspace...

怎么用MATLAB进行相位失真仿真?
能定义频域输入函数,产生用户定义的力频谱;能求解所关注的频带范围的系统模型,评价频响函数的幅值大小及相位特征;能够动画演示受迫响应及各模态响应;能把系统模型中有关受迫振动响应的信息列表;为进一步分析能把ADAMS模型中的状态矩阵输出到MATLAB及MATRIX中;运用设计研究,DOE及振动分析结果和参数化的振动输入数指优化...

matlab 是什么意思?
由于它是一种解释性语言,所以你可以在不编译代码的情况下直接执行它,这使得MATLAB使用起来相对简单。因此,MATLAB在许多领域得到了广泛的应用,例如机器学习、信号处理、数据分析和控制系统设计等。MATLAB的交互式环境可以帮助用户进行实时调试和深入探索数据。用户可以使用图形界面工具进行可视化分析和模拟,并...

matlab是什么
同时,MATLAB还提供了丰富的交互式工具和功能,方便用户进行软件二次开发,创建自定义函数和脚本。此外,MATLAB还支持多种编程范式,包括过程式编程和面向对象编程等。这使得MATLAB在科研、工程等领域得到了广泛应用。用户可以便捷地进行数据分析、算法开发和模型模拟等任务。还可以调用外部文件和与外部程序进行...

matlab里randn是啥意思
在Matlab编程环境中,"randn"是一个非常重要的函数,它的作用是生成一组具有特定特性的随机数。不同于"rand","randn"生成的是标准正态分布的随机数,其平均值固定为0,标准差为1。这意味着生成的每个数值都有相等的概率落在从负无穷到正无穷的连续区间内,且整个分布是对称的,中心集中在0。例如,...

matlab软件是什么软件?有什么用途
MATLAB由美国mathworks公司所发布,主要应用方面是数值计算、可视化程序设计、交互式程序设计等高科技计算环境。它集数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等各种十分强大的功于一个易于使用、便于观察的视窗之内,可以为科学研究与工程设计等工作以及其他需要进行有效数值计算的众多科学...

相似回答