8. 用y asinbx
拟合数据:
if nargin<2 %判断输入变量个数 x=[1:8]'/10;
%输入数据 y=[0.6 1.1 1.6 1.8 2.0 1.9 1.7 1.3]'; end
c=fminsearch(@fitfun,[0;0],optimset,x,y) ; %a,b都从0开始搜索 fprintf('The nonlinear least square fitting y=a*sin(b*x) for data\n\n'); fprintf('%6.1f',x);
fprintf('\n'); %换行
fprintf('%6.1f',y); %6位浮点数表示保留1位小数 fprintf('\n\n is\n\t y=%7.4f*sin(%7.4f*x)\n\n',c(1),c(2));
z=linspace(x(1),x(end),100); %x(1)至x(end)分隔100份,为了画出曲线 plot(x,y,'r+',z,c(1)*sin(c(2)*z),'b-.') x=[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8]; y=[0.6 1.1 1.6 1.8 2 1.9 1.7 1.3]; function err=fitfun(c,x,y) a=c(1); b=c(2);
err=y-a*sin(b*x); err=err'*err;