TP-traitement-audio-visuel/TP2/exercice_1.m
2023-06-22 20:47:16 +02:00

60 lines
2.1 KiB
Matlab
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

clear;
close all;
taille_ecran = get(0,'ScreenSize');
L = taille_ecran(3);
H = taille_ecran(4);
% Calcul du mod<6F>le exact :
beta_0 = 115;
beta_d = 123;
beta = [133,96,139,118];
n_affichage = 200; % Utilisation de 200 points pour l'affichage
pas_affichage = 1/(n_affichage-1);
x = 0:pas_affichage:1;
y = bezier(beta_0,beta,beta_d,x);
% TracŽ du mod<6F>le exact (trait noir) :
figure('Name','Estimation ecretee des parametres','Position',[0.4*L,0.05*H,0.6*L,0.7*H]);
plot(x,y,'-k','LineWidth',2);
set(gca,'FontSize',20);
xlabel('$x$','Interpreter','Latex','FontSize',30);
ylabel('$y$','Interpreter','Latex','FontSize',30);
hold on;
% Calcul des donnŽes d'apprentissage (bruit blanc sur les ordonnŽes) :
n_app = 50;
pas_app = 1/(n_app-1);
x_j = 0:pas_app:1;
sigma = 0.5;
y_j = bezier_bruitee(beta_0,beta,beta_d,x_j,sigma);
D_app = [x_j ; y_j];
% TracŽ des donnŽes d'apprentissage (croix bleues) :
plot(x_j,y_j,'+b','MarkerSize',10,'LineWidth',3);
% Param<61>tres du mod<6F>le :
d = 16; % Testez plusieurs valeurs de d entre 2 et 20
% lambda = 0.05; % Testez plusieurs valeurs dans l'intervalle [0,100]
%
% % Estimation des param<61>tres de la courbe de BŽzier ˆ partir des donnŽes bruitŽes :
% beta_estime = moindres_carres_ecretes(D_app,beta_0,beta_d,d,lambda);
%
% % TracŽ de la courbe de BŽzier estimŽe, de degrŽ d (trait rouge) :
% y_estime = bezier(beta_0,beta_estime,beta_d,x);
% plot(x,y_estime,'-r','MarkerSize',10,'LineWidth',3);
% lg = legend(' Modele exact',' Donnees d''apprentissage',...
% [' Modele estime ($d=' num2str(d) '$, $\lambda=' num2str(lambda) '$)'],'Location','SouthEast');
% set(lg,'Interpreter','Latex');
lambdas = 0:0.1:1; % Testez plusieurs valeurs dans l'intervalle [0,100]
for lambda=lambdas
% Estimation des param<61>tres de la courbe de BŽzier ˆ partir des donnŽes bruitŽes :
beta_estime = moindres_carres_ecretes(D_app,beta_0,beta_d,d,lambda);
% TracŽ de la courbe de BŽzier estimŽe, de degrŽ d (trait rouge) :
y_estime = bezier(beta_0,beta_estime,beta_d,x);
plot(x,y_estime, "DisplayName", num2str(lambda), 'LineWidth',2);
end
legend('Location','SouthEast')