25 lines
1 KiB
Mathematica
25 lines
1 KiB
Mathematica
|
function [F_1_chapeau,F_2_chapeau,a_chapeau] = MV(xy_donnees_bruitees,x_F_aleatoire,y_F_aleatoire,a_aleatoire)
|
||
|
|
||
|
n = size(xy_donnees_bruitees,2);
|
||
|
nb_tirages = length(a_aleatoire);
|
||
|
|
||
|
sommes_ecarts_carres = [];
|
||
|
for k = 1:nb_tirages
|
||
|
x_F_1_test = x_F_aleatoire(1,k);
|
||
|
y_F_1_test = y_F_aleatoire(1,k);
|
||
|
P_i_F_1_test = [x_F_1_test;y_F_1_test]*ones(1,n)-xy_donnees_bruitees;
|
||
|
distances_P_i_F_1_test = sqrt(sum(P_i_F_1_test.*P_i_F_1_test));
|
||
|
x_F_2_test = x_F_aleatoire(2,k);
|
||
|
y_F_2_test = y_F_aleatoire(2,k);
|
||
|
P_i_F_2_test = [x_F_2_test;y_F_2_test]*ones(1,n)-xy_donnees_bruitees;
|
||
|
distances_P_i_F_2_test = sqrt(sum(P_i_F_2_test.*P_i_F_2_test));
|
||
|
a_test = a_aleatoire(k);
|
||
|
ecarts_test = distances_P_i_F_1_test+distances_P_i_F_2_test-2*a_test;
|
||
|
sommes_ecarts_carres = [sommes_ecarts_carres sum(ecarts_test.*ecarts_test)];
|
||
|
end
|
||
|
[E_min,indice_min] = min(sommes_ecarts_carres);
|
||
|
|
||
|
F_1_chapeau = [x_F_aleatoire(1,indice_min) ; y_F_aleatoire(1,indice_min)];
|
||
|
F_2_chapeau = [x_F_aleatoire(2,indice_min) ; y_F_aleatoire(2,indice_min)];
|
||
|
a_chapeau = a_aleatoire(1,indice_min);
|