31 lines
1.4 KiB
Matlab
Executable file
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));
|