tinytony 发表于 2005-9-19 23:41

求助 : 这段程序怎么改? 最小二乘估计的问题

<P>%twoexps2.m<BR>funcitonE=twoexps2(a,x,y,b)<BR>x=x(:);y=y(:);Y=b(1)*exp(-a(1)*x)+b(2)*exp(-a(2)*x);<BR>E=sum((y-Y).^2);</P>
<P>%draw.m<BR>x=';<BR>y=data(1:100,2:2);%从EXCEL里到入的。应该没问题。<BR>a0=';<BR>options=optimset('fminsearch');<BR>options.TolX=0.001;<BR>options.Display='off';<BR>while 1<BR>    Mb=exp(-x*a0');<BR>    b=Mb\y;<BR>    a=fminsearch(@twoexps2,a0,options,x,y,b);<BR>    r=norm(a-a0)/norm(a);<BR>    if r&lt;0.001; break; end<BR>    a0=a;<BR>end<BR>y_est=b(1)*exp(-a(1)*x)+b(2)*exp(-a(2)*x);<BR>plot(x, y, 'k+');<BR>hold on;<BR>plot(x, y_est, 'r');<BR>hold off;</P>

<P>为什么总是出现:</P>
<P>&gt; In draw at 9<BR>??? Attempt to execute SCRIPT twoexps2 as a function.</P>
<P>Error in ==&gt; fminsearch at 175<BR>fv(:,1) = funfcn(x,varargin{:});</P>
<P>Error in ==&gt; draw at 10<BR>    a=fminsearch(@twoexps2,a0,options,x,y,b);</P>


<P>请高手帮助,谢谢!<BR></P>

MVH 发表于 2005-9-20 10:57

回复:(tinytony)求助 : 这段程序怎么改? 最小二乘估...

@twoexps2不对吧,变量twoexps2和文件twoexps2.m冲突了
[此贴子已经被作者于2005-9-20 11:02:38编辑过]

huangdaoda 发表于 2005-12-23 09:33

回复:(tinytony)求助 : 这段程序怎么改? 最小二乘估...

其实这个最小二乘法用矩阵要简单多了。正则方程:设 Y=pX+e:其中<BR>Y=y1    X=1 x1<BR>    y2      1 x2       <BR>    ...         ...<BR>    yn      1 xn    <BR>    <BR>e=e1<BR>    e2<BR>    ...<BR>    en<BR>X,Y,e都是矩阵。<BR>L=X'X<BR>e=L-1X'Y<BR>其中L-1表示L的逆矩阵<BR>      <BR><BR>         

prince00840 发表于 2009-6-18 09:32

一般在 应用中 多用向量啊
页: [1]
查看完整版本: 求助 : 这段程序怎么改? 最小二乘估计的问题