Matlab拟合工具箱自定义函数中 中输入y=L./(1+a*exp(-bt))出现错误,要拟合的函数是 泊松曲线,该怎么输入 Matlab中的自定义函数拟合,nlinfit问题!

作者&投稿:通娣 (若有异议请与网页底部的电邮联系)
这个表达式输入跟一般的书写是一致的,不需要用点乘、点除之类的,直接写表达式,但是乘除符号是必须要有的.你这个表达式明显是错的,“y=L./(1+aexp(-bt))”,这里是
“L/”,“a*exp”,“b*t”,即:y=L/(1+a*exp(-b*t)).
再一个,使用自定义的函数表达式拟合时,其中的参数(L,a,b)是需要指定范围的(当你输入完函数表达式后,在表达式下方就会出现参数范围设置),根据你自己的实际问题大概估计一下范围就行,一般不能直接按照matlab默认的-inf到+inf去拟合,这样往往弄不出来你想要的结果.

点乘;或-b*t;试一下

急求,用matlab求拟合函数Y=L/1+a*exp(-b*x)~

解答如下:
分两个步骤:
第一步建立函数模型的M文件
打开M编辑器,输入如下代码;
function yd=model(beta0,x)
%% L/1+a*exp(-b*x)
a=beta0(1);
b=beta0(2);
L=beta0(3);
x1=x;
yd=L./(1+a.*exp(-b.*x1));
保存这个M文件到work文件夹下,名称为:model
第二步:在命令窗口中输入如下代码:
x=[0 1 2 3 4 5 6 7 8 9]';
y=[1 2.31969 4.50853 6.90568 6.00512 5.56495 5.32807 7.56101 8.9392 9.5817]';
beta0=[3 0.3 11];
[beta,R,J]=nlinfit(x,y,'model',beta0)
运行后得到如下结果:
beta =

3.5457 0.3194 10.8337


R =

-1.3833
-0.7098
0.7359
2.3149
0.5556
-0.7416
-1.7921
-0.2955
0.4443
0.5539


J =

-0.5243 0 0.2200
-0.6155 2.1823 0.2797
-0.6935 4.9176 0.3483
-0.7461 7.9359 0.4238
-0.7638 10.8325 0.5031
-0.7432 13.1754 0.5822
-0.6883 14.6416 0.6573
-0.6088 15.1101 0.7253
-0.5171 14.6675 0.7842
-0.4243 13.5395 0.8334
其中的
beta =

3.5457 0.3194 10.8337
依次便是方程的系数:a=3.5457 b=0.3194 L=10.8337
所以回归的结果是:
y=10.8337./(1+3.5457.*exp(-0.3194.*x))
画出图像,在命令窗口中输入如下代码:
x=[0 1 2 3 4 5 6 7 8 9]';
x1=0:0.1:10;
y=[1 2.31969 4.50853 6.90568 6.00512 5.56495 5.32807 7.56101 8.9392 9.5817]';
y1=10.8337./(1+3.5457.*exp(-0.3194.*x1));
plot(x,y,'+',x1,y1)
计算x=10的估计值,输入如下代码:
x=10;
回车运行后得到结果为:
y =

9.4584

%[1 1 1]就是给a(1),a(2),a(3) 参数赋予初值
%程序运行不了是因为你定义的内联函数inline有错,注意t为数组运算符得用点
t=[1790:10:2000];
p=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5 251.4 281.4];
ft=inline('a(1).*a(2)./(a(1)+exp(-a(3).*t).*a(2)-exp(-a(3).*t).*a(1))','a','t');
a=nlinfit(t,p,ft,[1 1 1])
%a = 1.0000 94.7727 1.0000
%但是给出警告,拟合结果不好,得参考帮助设置一下optimset

Matlab拟合工具箱自定义函数中 中输入y=L./(1+a*exp(-bt))出现错误,要...
答:“L/”,“a*exp”,“b*t”,即:y=L/(1+a*exp(-b*t)).再一个,使用自定义的函数表达式拟合时,其中的参数(L,a,b)是需要指定范围的(当你输入完函数表达式后,在表达式下方就会出现参数范围设置),根据你自己的实际问题大概估计一下范围就行,一般不能直接按照matlab默认的-inf到+inf...

matlab自定义函数拟合
答:matlab中的非线性拟合函数nonlinfit具有强大的用自己定义的一个任意函数来拟合数据的功能。最常见的调用形式为 BETA = nlinfit(X,Y,MODELFUN,BETA0)BETA为待拟合的参数,X为自变量(矩阵),Y为应变量(向量),MODELFUN为自定义的拟合函数(function handle 型数据),BETA0为BETA的初始值(向量)。X可...

matlab curve fitting 拟合自定义函数问题?
答:用matlab curve fitting 拟合自定义函数时,参数a、b、n、m拟合不出来的问题?分析了题主给出的数据和形式,问题应该出在数据书写上,没有按标准格式,即每行x,y,z数据没有用分号隔开,A=[1 1 890.643; 1 454.285 1;。。。]数据按上述修改后,就可以用拟合工具箱,对a、b、n、m参数进行...

如何用matlab数据拟合函数
答:1、首先启动matlab,选择编辑器,再新建一个命令文件。2、然后在编辑器窗口中输入图示的代码。3、然后我们点击界面上方菜单栏里的保存图标进行保存。4、需要注意的是,保存文件的位置要与当前搜索路径的位置保持一致。这可以通过右键编辑窗口的文件,在弹出的下拉框中选择。5、最后再命令行窗口处输入dxsnh...

初学matlab拟合自定义函数
答:好像不是这样用的,你首先确定你要拟合多少方次,如2次 方法为:>>x=[0 0.005536667 0.01098 0.048733333 0.1442 0.273 0.4008 0.713666667 1.669333333 7.4];>>y=[2 9.889266667 19.82004008 98.43472498 198.305835 292.202381 395.9434343 741.7266667 1478.613333 2876];>>polyfit(x...

在Matlab中如何数据拟合函数?
答:在Matlab中进行数据拟合,可以使用 fit 函数。该函数可以用来生成拟合模型,对数据进行拟合,并返回拟合模型对象。下面是一个简单的数据拟合的例子:假设我们有一组数据,x 和 y 分别表示自变量和因变量:x = [1 2 3 4 5];y = [3 5 7 9 11];现在我们想拟合一个一次函数,即 y = a*x + ...

请教MATLAB编程高手,如何用matlab自定义函数拟合曲线,求详细程序,万分...
答:clc,clear all,close all a1=?;a2=?;b1=?;b2=?;d=?;s=?; %需要已知 lambda=[...]; %数据 T=[...]; %数据 n=a1./lambda.^2+a2;alpha=10^(b1./lambda.^2+b2);A=16*n^2*s;B=(n-l)^3*(n+s^2);C=2*(n^2-l*(n^2-s^2));D=(n-l)^3*(n-s^2...

在matlab中怎样自定义拟合对数函数(y=a*log(b*x))
答:在command window里输入数据与命令:x=[];%数据放进中括号里面。y=[];cftool 这样就打开了自定义拟合窗口了。如下图:画圈的地方是,你要设置的。

matlab函数拟合
答:简单的方法:首先定义x和y,然后cftool(x,y)(它是自带拟合工具箱)。这时你会得到一个含有数据点的界面。点击第二个按钮“fitting”——>“new fit”在"type of fit"中选择你想用的拟合方法(默认为多项式拟合),并在下面的大方框中选择次数等具体形式。——>"Apply"——>"save to workspace"...

matlab 怎么样用我指定的函数进行拟合我的实验数据?
答:用下面的代码进行最小二乘拟合:f=@(c,x)c(1)*exp(c(2)*x)+c(3);c=lsqcurvefit(f,[0 0 0],x,fx)得到的c三个元素分别就是A、B、C。示例:A=2;B=0.3;C=1;x=0:2:10;fx = A * exp(B*x) + C + randn(size(x))*0.3;f=@(c,x)c(1)*exp(c(2)*x)+c(3);...