|
楼主 |
发表于 2006-4-5 10:27
|
显示全部楼层
<P>happy版主:<BR> 关于这个问题我查了很多的资料,总算找到了解决的方法了。在matlab6.5辅助优化计算与设计这本书里介绍了LSQCURVEFIT函数,利用此函数可以在最小二乘意义上解决非线性曲线拟合(数据拟合)问题。也就是说,给定输入数据x,以及观测的输出数据f,找到系数m、c、k,使得函数mx''+cx'+kx=f(t)能够最好的拟合向量值。<BR> 书中的例子代码如下,可是我运行的时候还是会出错,不知道该怎么办了,你再帮帮我!谢谢!<BR>function f=myfun(a,x)<BR>f=a(1)*x.^2+a(2)*sin(x)+a(3)*x.^3;<BR>x=[3.6,7.7,9.3,4.1,8.6,2.8,1.3,7.9,10.0,5.4];<BR>y=[16.5,150.6,263.1,24.7,208.5,9.9,2.7,163.9,325.0,54.3];<BR>a0=[10,10,10];<BR>[a,residual]=lsqcurvefit(@myfun,a0,x,y);<BR><BR>错误提示:<BR>??? Input argument 'a' is undefined.</P>
<P>Error in ==> d:\MATLAB6p5p1\work\myfun1.m<BR>On line 2 ==> f=a(1)*x.^2+a(2)*sin(x)+a(3)*x.^3;<BR><BR></P> |
|