【问题标题】:How to Fit a decay exponential function in Matlab如何在 Matlab 中拟合衰减指数函数
【发布时间】:2021-09-15 14:55:30
【问题描述】:

我必须通过 Matlab 上的指数函数来拟合测量结果。我的教授要求我只使用

  • fminsearch
  • 多边形
  • polyfit

其中一个或两个。我必须找到适合它的参数 a 和 b(值)。

这是我写的:

x=[1:10:70]
y=[0:10:70]
x=[12.5,11.8,10.8,10.9,6.5,6.2,6.1,5.423,4.625]
y=[0,0.61,1.3,1.4,14.9,18.5,20.1,29.7,58.2]
xlabel('Conductivité')
ylabel('Inductance')

函数的格式为a*e^(-b*x) +c

【问题讨论】:

  • 我在您的帖子中没有看到任何问题。您只是告诉我们需要做什么。请具体说明您希望人们回答的问题。

标签: matlab curve-fitting curve exponential


【解决方案1】:

polyfit 和 polyval 仅对处理多项式有用。所以你必须写一个 min(f(x)) 形式的最小化问题。

functionToMinimize = @(pars, x, y)(norm(pars(1).*exp(-pars(2).*x) - y));
targetFunctionForFminseardch = @(pars)(functionToMinimize(pars, x, y));
minPars = fminsearch(targetFunctionForFminseardch, [0, 1])

如果您对如何构造这样的最小化问题有疑问,请阅读匿名函数和向量范数的使用。

您的代码也有一些缺陷。只想使用实际测量的数据,为什么还要定义两次 x 和 y?

【讨论】:

  • 如果你取对数,你会得到多项式。
  • 或者你可以使用fitfittype,如[mathworks.com/help/curvefit/exponential.html]
  • 哦,是的,没错!在运行 fminsearch 之前使用 log 应该会有所帮助,因为它只是一个线性回归问题,所以 fminsearch 会有点矫枉过正。感谢您的意见!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-24
  • 2020-09-11
  • 2021-11-10
  • 1970-01-01
  • 2012-12-30
相关资源
最近更新 更多