TP-analyse-donnees/TP2/maximum_vraisemblance.m
2023-05-29 16:43:44 +02:00

31 lines
1.4 KiB
Matlab
Executable file

% Definition des intervalles pour les tirages aleatoires :
x_min = min(xy_donnees_bruitees(1,:));
x_max = max(xy_donnees_bruitees(1,:));
delta_x = x_max-x_min;
y_min = min(xy_donnees_bruitees(2,:));
y_max = max(xy_donnees_bruitees(2,:));
delta_y = y_max-y_min;
a_max = sqrt(delta_x^2+delta_y^2)/2;
% Tirage de valeurs aleatoires pour les parametres :
nb_tirages = 10000;
x_F_aleatoire = x_min+(x_max-x_min)*rand(2,nb_tirages);
y_F_aleatoire = y_min+(y_max-y_min)*rand(2,nb_tirages);
a_aleatoire = a_max*rand(1,nb_tirages);
% Estimation des parametres par le maximum de vraisemblance :
[F_1_chapeau,F_2_chapeau,a_chapeau] = MV(xy_donnees_bruitees,x_F_aleatoire,y_F_aleatoire,a_aleatoire);
C_chapeau = (F_1_chapeau+F_2_chapeau)/2;
F_2_chapeau_F_1_chapeau = F_1_chapeau-F_2_chapeau;
theta_0_chapeau = atan(F_2_chapeau_F_1_chapeau(2)/F_2_chapeau_F_1_chapeau(1));
c_chapeau = sqrt(F_2_chapeau_F_1_chapeau(1)^2+F_2_chapeau_F_1_chapeau(2)^2)/2;
b_chapeau = sqrt(a_chapeau*a_chapeau-c_chapeau*c_chapeau);
% Affichage de l'ellipse estimee par MV :
affichage_ellipse(C_chapeau,theta_0_chapeau,a_chapeau,b_chapeau,theta_points_ellipse,'b-');
lg = legend('Ellipse','Donnees bruitees','Estimation par MV','Location','Best');
set(lg,'FontSize',15);
% Calcul du score de l'ellipse estimee par MV :
fprintf('Score de l''estimation par MV = %.3f\n',score(F_1,F_2,a,F_1_chapeau,F_2_chapeau,a_chapeau));