作业帮 > 综合 > 作业

matlab求函数的参数!

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 11:04:12
matlab求函数的参数!
有一个已知形式的函数和一组对应的x,y.用matlab求函数里未知的参数.搞了一天了,头都大了!
函数形式可以给出来吗?如果是线性的话可以直接最小二乘估计参数.
如果是非线性的,建议用fit函数,自己看一下帮助文档就知道怎么用了.
再问: y=m/[1+(m/566-1)*e^(-ry)] m,r是参数。x和y有很多组,我就不写了。只要一个代码就行。谢谢!
再答: 是y=m/[1+(m/566-1)*e^(-rx)] 吧。。首先对公式变形一下: Y = a+(1/566-a)*exp(-r*x), 其中Y = 1/y,a = 1/m 代码如下: Y = 1./y; ff = @(a, r, x) a+(1/566-a)*exp(-r*x); typ = fittype(ff); [fitobject,gof] = fit(x, Y, typ); ci = coeffvalues(fitobject); % 拟合得到的系数 其中ci(1)是a,ci(2)是r 这段代码在matlab2012b下可以运行(用到了curvefit工具箱)
再问: 我的x,y要怎么赋值啊!就像这样吗? x=[1 2 5 6 2 8 6]; y=[5 8 2 4 8 2 6 ]; Y = 1./y; ff = @(a, r, x) a+(1/566-a)*exp(-r*x); typ = fittype(ff); [fitobject,gof] = fit(x, Y, typ); ci = coeffvalues(fitobject); 但好像不行啊!
再答: x 和 y 要用列向量。 matlab里这种单一的数据,最好用列向量,跟数学上的习惯保持一致。
再问: 大哥!要不我把x和y给你,你帮我编一下吧。我编的都不对啊!数据hi给你了,这里输不下。万分感谢啊!
再答: 另一位朋友“lhmhz”的程序不好使吗? 我再说清楚一点吧,你这样定义的x和y是行向量,转置一下就是列向量了。转置的操作符是 .'