54 lines
1.4 KiB
Matlab
Executable file
54 lines
1.4 KiB
Matlab
Executable file
clear;
|
|
close all;
|
|
|
|
donnees;
|
|
|
|
pause
|
|
|
|
maximum_vraisemblance;
|
|
|
|
pause
|
|
|
|
% Estimation des parametres par les moindres carres ordinaires :
|
|
x = xy_donnees_bruitees(1, :)';
|
|
y = xy_donnees_bruitees(2, :)';
|
|
Beta_chapeau = MCO2(x, y);
|
|
|
|
[C_chapeau, theta_0_chapeau, a_chapeau, b_chapeau] = conversion(Beta_chapeau);
|
|
|
|
% Affichage de l'ellipse estimee par MCO :
|
|
affichage_ellipse(C_chapeau, theta_0_chapeau, a_chapeau, b_chapeau, theta_points_ellipse, 'r-');
|
|
lg = legend('Ellipse', 'Donnees bruitees', 'Estimation par MV', 'Estimation par MCO', 'Location', 'Best');
|
|
set(lg,'FontSize', 15);
|
|
|
|
% Calcul du score de l'ellipse estimee par MCO :
|
|
R_chapeau = [cos(theta_0_chapeau) -sin(theta_0_chapeau) ; sin(theta_0_chapeau) cos(theta_0_chapeau)];
|
|
c_chapeau = sqrt(a_chapeau * a_chapeau - b_chapeau * b_chapeau);
|
|
F_1_chapeau = R_chapeau * [c_chapeau ; 0] + C_chapeau;
|
|
F_2_chapeau = R_chapeau * [-c_chapeau ; 0] + C_chapeau;
|
|
fprintf('Score de l''estimation par MCO = %.3f\n', score(F_1, F_2, a, F_1_chapeau, F_2_chapeau, a_chapeau));
|
|
|
|
function Beta_chapeau = MCO(x, y)
|
|
|
|
B = zeros(length(x)+1,1);
|
|
B(length(B)) = 1;
|
|
|
|
on = ones(length(x), 1);
|
|
A = [ x.^2 x.*y y.^2 x y on ; 1 0 1 0 0 0 ];
|
|
|
|
Beta_chapeau = A \ B;
|
|
|
|
end
|
|
|
|
|
|
function Beta_chapeau = MCO2(x, y)
|
|
|
|
on = ones(length(x), 1);
|
|
|
|
B = -x.^2;
|
|
A = [ x.*y y.^2-x.^2 x y on ];
|
|
|
|
X_tild = A \ B;
|
|
Beta_chapeau = [ 1 - X_tild(2) ; X_tild ];
|
|
|
|
end |