第1个回答 2012-03-07
lsqcurvefit 函数可以用来球二元线性方程的系数。
如:x=0:0.5:10;x=x';
y=x.^2;
x1=x*sin(pi/4)+y*cos(pi/4)+2+rand(1,length(x))';
y1=x*cos(pi/4)+y*sin(pi/4)+2+rand(1,length(x))';
xdata=[x y;x y];
%ydata=y;
ydata=zeros(2*length(x),1);
ydata(1:length(x))=y1;
ydata((length(x)+1):2*length(x))=x1;
k0 = [0 0.3 3]; % Starting guess
n=length(x);
[k,res]=lsqcurvefit(@myfun,k0,xdata,ydata);
%}
plot(xdata,ydata,'-r*',xdata,myfun(k,xdata),'-bd');
其中 myfun是单独一个函数:
function f=myfun(k,xdata)
n=length(xdata(:,1))/2;
f1=xdata(1:n,1)*k(1)+xdata(1:n,2)*sqrt(1-k(1)^2)+k(3);
f2=xdata(1:n,1)*sqrt(1-k(1)^2)+xdata(1:n,2)*k(1)+k(2);
f=[f1;f2];
end