matlab程序,拟合函数matlab lsqcurvefitt

matlab&非线性拟合&nlinfit&lsqcurvefit&指数函数拟合
data: x and y
指数函数拟合
myfunc1=inline('beta(1)+beta(2)*(1-exp(-x./beta(3)))./x','beta','x');
beta0min=[0,0,0.01];
beta0max=[100,100,100];
options=optimset('LargeScale','on','Display','on','TolX',1e-500,'TolFun',1e-500,'MaxIter',200,'MaxFunEvals',500000);
beta0=[.5 .5 .5 ];
beta=beta0;
beta=lsqcurvefit(myfunc1,beta,x,y,beta0min,beta0max,options);
g0=beta(1),g1=beta(2),t1=beta(3)
y1=g0+g1*(1-exp(-x1./t1))./x1;
plot(log10(x),y,'ko',log10(x1),y1,'r')
%双指数函数拟合
myfunc2=inline('beta2(1)+beta2(2)*(1-exp(-x/beta2(3)))./x+beta2(4)*(1-exp(-x/beta2(5)))./x','beta2','x');
beta0min=[0,0,0.01,0,0.01];
beta0max=[100,100,100,100,1000];
options=optimset('LargeScale','on','Display','on','TolX',1e-500,'TolFun',1e-500,'MaxIter',200,'MaxFunEvals',500000);
beta20=[.5 .5 .5 .3 .3];
beta2=beta20;
beta2=nlinfit(x,y,myfunc2,beta2)
beta2_1=beta2;
beta2=lsqcurvefit(myfunc2,beta2,x,y,beta0min,beta0max,options);
g20=beta2(1),g21=beta2(2),t21=beta2(3),g22=beta2(4),t22=beta2(5)
x2=min(x):.1:max(x);
x2=x.*1.1;
y2=g20+g21*(1-exp(-x2./t21))./x2+g22*(1-exp(-x2./t22))./x2;
plot(log10(x2),y2,'b-')
g20_1=beta2_1(1),g21_1=beta2_1(2),t21_1=beta2_1(3),g22_1=beta2_1(4),t22_1=beta2_1(5)
x2_1=x.*1.1;
y2_1=g20_1+g21_1*(1-exp(-x2_1./t21_1))./x2_1+g22_1*(1-exp(-x2_1./t22_1))./x2_1;
plot(log10(x2_1),y2_1,'g-')
legend('data','1','2(lsq)','2(lnlin)')
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。随时随地,快速访问
只要手机在手,您都可以快速、方便地看贴发帖,与论坛好友收发短消息。
极致优化,畅快"悦"读
独有的论坛界面和触屏设计,手机论坛也变得赏心悦目,操作自如。
即拍即发,分享生活
不管是风景图画,还是新闻现场,拍照发帖一气呵成,让您在论坛出尽风头。
下载客户端后,拍摄二维码快速访问本站:
或者通过以下地址访问:
Powered bymatlab程序,拟合函数lsqcurvefit_百度知道
matlab程序,拟合函数lsqcurvefit
legend('%以计算出的c为初值进行迭代. 5 5 6 7 8 9 10 11 12 13 14 15 16]. 5 4 4;c0=[1 1 1];for i=1, or [;Example2_1&#39, tdata)f=c(1)* (exp(-c(2)* tdata) -exp(-c(3)* tda-ta)),xCExample2_1&#39:}), ydata);ydata=[30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25 18 15 12 10 7 7 4].F = feval(funfcn_x_xdata{3},急着用,endy1=c(1)* (exp(-c(2)* tdata) -exp(-c(3)* tdata)): File,&#39, ydata), tdata,varargin{, c0;拟合曲线'plot( tdata. 25 0, {;+',求各位帮忙查查错啊 自定义函数 function f=Example2_1(c, y1);实验数据'. 75 1 1.Error in lsqcurvefit (line 199)
initVals, tdata: Example2_1;)运行结果 Untitled4Error using fevaleError. 5 3 3: 2 Column.m L源程序tdata=[0: 50c=lsqcurvefit(&#39, c0. 5 0:
Failure in initial user-supplied objectivec0=c,XDATA,运行出错;, ydata: 44Expression or statement is incorrect--possibly unbalanced (;C,&#39一篇文献里的程序. 5 2 2. LSQCURVEFITError in Untitled4 (line 5)c=lsqcurvefit(&#39
提问者采纳
//f;-exp(-c(3)*&nbsp.5&nbsp那是因为你复制出来的文本错误.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http,修正以下两处;4;0;结果如下<a href="8&nbsp.25&6&nbsp,&11&3;(exp(-c(2)*&tdata)f=c(1)*&3&5&2;16];tdata)&function&7&tdata=[0;10&nbsp.baidu.5&0://f;f=Example2_1(c.12&nbsp.5&/zhidao/wh%3D600%2C800/sign=bcdc6e8a848ba61edfbbc/acb7d0a2011d6cddcdefd;1.hiphotos.5&tdata)).5&nbsp.4&nbsp./zhidao/wh%3D450%2C600/sign=f0f61c77a8fee4f88bb0/acb7d0a2011d6cddcdefd;13&/zhidao/pic/item/acb7d0a2011d6cddcdefd;15&nbsp.baidu.jpg" esrc="http://f.9&2&nbsp:&nbsp
提问者评价
来自团队:
其他类似问题
为您推荐:
matlab的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁小木虫 --- 500万硕博科研人员喜爱的学术科研平台
&&查看话题
matlab非线性拟合中lsqcurvefit初值设置
想用matlab中的lsqcurvefit做离散点的拟合,但是不管怎么设初值,拟合直线就是一条水平线,附件中的图片是对问题的详细描述,希望有高人指点。
曲线拟合.jpg
按照你的公式,可以进行推导:
(\Delta \lambda)^{2}+4(\lambda-\lambda0)^{2}=\frac{2\Delta \lambda}{f\pi}
(\Delta \lambda-\frac{1}{f\pi})^{2}+4(\lambda-\lambda0)^{2}-(\frac{1}{f\pi})^{2}=0
根据你的数据计算
(\frac{1}{f\pi})^{2}
这一项的数值很小,应该在1e5的数量级上
也就是说前面两个平方和都应该很小
所以计算出合适的数值很难,或者说初值依赖很强
不太明白您的意思?能否麻烦您详细说一下?f不是频率的意思,只是我表示函数的符号,就是x、y方程中的y
数据是实验测得,我把程序以文本的形式再发一遍,麻烦您帮忙看一下,谢谢啦
拟合函数程序:
function f=Lor(x,xdata)
f=(2/pi)*(x(1)./(4*(xdata-x(2)).^2+x(1)^2));
调用程序:
=lsqcurvefit('Lor',x0,xdata,ydata)
f=Lor(x,xdata);
plot(xdata,ydata,'g*');
plot(xdata,f,'r-');
那就木有函数了:shuai:
能否麻烦您帮忙看下程序?
能否麻烦您帮忙看下程序,谢谢!
我是查资料得到的matlab中做非线性拟合函数有lsqcurvefit和lsqnonlin,所以当时就选了这个,问题是初值该怎么设?
我的汉语表达能力这么差么:shuai:
我的意思是说你选的拟合函数有问题,不是lsqcurcefit有问题
是我理解错了,这个函数是光谱分析中谱线轮廓函数
那你有没有实例的结果
比如说{\Delta \lambda c}和{ \lambda 0}的值都是多少
我用matlab中的cftool工具箱利用高斯函数拟合得到的两个值分别是0.009和427.5
您说的倒真是提醒我了,一会我再自己算算,谢谢您的热心帮忙,有问题希望能再向您请教!
研究生必备与500万研究生在线互动!
扫描下载送金币matlab(11)
非线性曲线拟合是已知输入向量xdata和输出向量ydata,并且知道输入与输出的函数关系为ydata=F(x, xdata),但不知道系数向量x。今进行曲线拟合,求x使得输出的如下最小二乘表达式成立:
min Σ(F(x,xdatai)-ydatai)^2
lsqcurvefit
&#26684;式
x = lsqcurvefit(fun,x0,xdata,ydata)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)
[x,resnorm] = lsqcurvefit(…)
[x,resnorm,residual] = lsqcurvefit(…)
[x,resnorm,residual,exitflag] = lsqcurvefit(…)
[x,resnorm,residual,exitflag,output] = lsqcurvefit(…)
[x,resnorm,residual,exitflag,output,lambda] = lsqcurvefit(…)
[x,resnorm,residual,exitflag,output,lambda,jacobian] =lsqcurvefit(…)
参数说明:
x0为初始解向量;xdata,ydata为满足关系ydata=F(x, xdata)的数据;
lb、ub为解向量的下界和上界lb≤x≤ub,若没有指定界,则lb=[ ],ub=[ ];
options为指定的优化参数;
fun为待拟合函数,计算x处拟合函数&#20540;,其定义为
function F = myfun(x,xdata)
resnorm=sum ((fun(x,xdata)-ydata).^2),即在x处残差的平方和;
residual=fun(x,xdata)-ydata,即在x处的残差;
exitflag为终止迭代的条件;
output为输出的优化信息;
lambda为解x处的Lagrange乘子;
jacobian为解x处拟合函数fun的jacobian矩阵。
例 求解如下最小二乘非线性拟合问题
已知输入向量xdata和输出向量ydata,且长度都是n,待拟合函数的表达式为
ydata(i)=x(1)-xdata(i)^2&#43;x(2)-sin(xdata(i))&#43;x(3)-xdata^3
即目标函数为min Σ(F(x,xdata(i))-ydata(i))^2
其中:F(x,xdata) = x(1)*xdata^2 &#43; x(2)*sin(xdata) &#43; x(3)*xdata^3
初始解向量为x0=[0.3, 0.4, 0.1],即表达式的 个参数[x(1),x(2),x(3)]。
解:先建立拟合函数文件,并保存为myfun.m
function F = myfun(x,xdata)
F = x(1)*xdata.^2 &#43; x(2)*sin(xdata) &#43; x(3)*xdata.^3;
然后给出数据xdata和ydata
&&xdata = [3.6 7.7 9.3 4.1 8.6 2.8 1.3 7.9 10.0 5.4];
&&ydata = [16.5 150.6 263.1 24.7 208.5 9.9 2.7 163.9 325.0 54.3];
&&x0 = [10, 10, 10];
%初始估计&#20540;
&&[x,resnorm] = lsqcurvefit(@myfun,x0,xdata,ydata)
Optimization terminated successfully:
Relative function value changing by less than OPTIONS.TolFun
x = 0.2269
=&即解出的系数最优估计&#20540;
=&在x解&#20540;处的目标最小二乘表达式&#20540;。即所谓残差。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:30046次
排名:千里之外
原创:24篇
转载:49篇
(1)(1)(1)(2)(6)(2)(3)(3)(6)(2)(2)(2)(12)(10)(1)(2)(9)(14)

我要回帖

更多关于 matlab的lsqcurvefit 的文章

 

随机推荐