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

51 lines
1.3 KiB
Matlab
Executable file

clear;
close all;
taille_ecran = get(0,'ScreenSize');
L = taille_ecran(3);
H = taille_ecran(4);
figure('Name','Simulation des donnees','Position',[0.33*L,0,0.67*L,H]);
% Parametres de l'ellipse :
taille = 20;
c = 2*taille/5*(rand+0.25);
a = 2*taille/5*(rand+1);
if a<c
aux = a;
a = c;
c = aux;
end
b = sqrt(a^2-c^2);
C = (taille-a)*(2*rand(2,1)-1);
theta_0 = 2*pi*rand;
% Affichage de l'ellipse :
nb_points_ellipse = 100;
deux_pi = 2*pi;
theta_points_ellipse = deux_pi/nb_points_ellipse:deux_pi/nb_points_ellipse:deux_pi;
affichage_ellipse(C,theta_0,a,b,theta_points_ellipse,'g-');
hx = xlabel('$x$','FontSize',20);
set(hx,'Interpreter','Latex');
hy = ylabel('$y$','FontSize',20);
set(hy,'Interpreter','Latex');
axis equal;
hold on;
% Foyers :
R = [cos(theta_0) -sin(theta_0) ; sin(theta_0) cos(theta_0)];
F_1 = R*[c ; 0]+C;
F_2 = R*[-c ; 0]+C;
% Calcul et affichage des donnees bruitees :
n = 200;
theta_donnees_bruitees = 2*pi*rand(1,n)+2*pi*rand;
xy_donnees_bruitees = [a*cos(theta_donnees_bruitees) ; b*sin(theta_donnees_bruitees)];
xy_donnees_bruitees = R*xy_donnees_bruitees+C*ones(1,n);
sigma = 1;
xy_donnees_bruitees = xy_donnees_bruitees+sigma*randn(2,n);
plot(xy_donnees_bruitees(1,:),xy_donnees_bruitees(2,:),'k*');
echelle = [-taille taille -taille taille];
axis(echelle);
lg = legend('Ellipse','Donnees bruitees','Location','Best');
set(lg,'FontSize',15);