matlab最小二乘曲線擬合

clear;clc;

%%%%%%%%%%%%%%%% 1 %%%%%%%%%%%%%%%%%%%
% x=0:.1:10; 
% y=0.12*exp(-0.213*x)+0.54*exp(-0.17*x).*sin(1.23*x);
% f=inline('a(1)*exp(-a(2)*x)+a(3)*exp(-a(4)*x).*sin(a(5)*x)','a','x');
% [xx,res]=lsqcurvefit(f,[1,1,1,1,1],x,y); 
% xx',res
% 
% x1=0:0.01:10; y1=f(xx,x1); plot(x1,y1,x,y,'o')

%%%%%%%%%%%%%%%% 2 %%%%%%%%%%%%%%%%%%%%

% x=0.1:0.1:1;
% y=[2.3201,2.6470,2.9707,3.2885,3.6008,3.9090,4.2147,4.5191,4.8232,5.1275];
% 
% a=lsqcurvefit('c8f3',[1;2;2;3],x,y); a'
% y1=c8f3(a,x); plot(x,y,x,y1,'o')

% % function y=c8f3(a,x)
% % y=a(1)*x+a(2)*x.^2.*exp(-a(3)*x)+a(4);

%%%%%%%%%%%%%%%% 3 %%%%%%%%%%%%%%%%%%%% 二元函數擬合
x = [0 0 1 1 2 0 2 1 2;0 1 0 1 0 2 2 2 1]; 
y = [0 1 2 3 4 2 6 4 5]; % y = 2 * x(1,:) +  x(2,:)
f=inline('a(1) *  x(1,:) + a(2) * x(2,:) ','a','x');
[xx,res]=lsqcurvefit(f,[1,1],x,y); 
xx',res


% x=[0.1527 7.4679 4.4510 9.3181 4.6599 4.1865 8.4622 5.2515 2.0265 6.7214];
% y=[8.3812 0.1964 6.8128 3.7948 8.3180 5.0281 7.0947 4.2889 3.0462 1.8965];
% z=[8.5979 56.6475 26.9266 91.1643 30.1839 23.2528 79.0822 32.7274 8.0064 47.6670];
% %只要這樣寫就可以了
% f=@(p,x)(p(1)*x(1,:).^2+p(2)*x(2,:));
% p=lsqcurvefit(f,rand(1,2),[x;y],z)%p=[a b]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章