Skip to content
Snippets Groups Projects
Commit 95238766 authored by adeline.paiement's avatar adeline.paiement
Browse files

nettoyage

parent 58be3f0c
No related branches found
No related tags found
No related merge requests found
classdef Dynamics_Model_Periodic < Dynamics_Model
methods
function obj = Dynamics_Model_Periodic(filename_interpolant, display_screen)
obj = obj@Dynamics_Model(filename_interpolant, display_screen);
end
function X = normalise_X(obj, X)
X = mod(X, 1);
end
function periodic = is_periodic(obj)
periodic = 1;
end
end
end
\ No newline at end of file
......@@ -96,7 +96,7 @@ classdef Interface < handle
end
end
end
%% choix de la meilleure sequence (peut être pour plus tard: toujours choisir la séquence qui se termine sur le modèle C ?)
[max_proba, indice] = max(obj.proba_morceaux);
......@@ -105,7 +105,7 @@ classdef Interface < handle
%% calcul les scores pour les frames du dernier morceau
% mise à jour des x pour bien les étaler
%obj.meilleure_sequence_models(end).spread_X();
obj.meilleure_sequence_models(end).spread_X();
new_scores = obj.meilleure_sequence_models(end).compute_loglikelihood_dynamics([1:obj.N-obj.first_frame_of_models(indice)+1]);
obj.loglikelihood = [obj.scores_finis{indice} new_scores];
......@@ -215,7 +215,7 @@ classdef Interface < handle
else
nouveau_morceau_fini_branche{branche} = copy(obj.dynamics_models{branche}); % ce modèle n'a pas encore vu la frame courante, on peut donc le sauvegader dans son état à la frame précédente
%%%% %%%%%% mettre à jour la copie ici
%nouveau_morceau_fini_branche{branche}.spread_X();
nouveau_morceau_fini_branche{branche}.spread_X();
end
%% on récupère les scores des frames vues par le modèle
......
classdef Interface_Periodic < Interface
methods
function obj = Interface_Periodic(filename_interpolant, display_screen)
obj = obj@Interface(filename_interpolant, display_screen);
if display_screen == -1
obj.dynamics_model = Dynamics_Model_Periodic(filename_interpolant, display_screen);
else
obj.dynamics_model = Dynamics_Model_Periodic(filename_interpolant, display_screen+2);
end
end
function initialise(obj, initial_alpha, sigma_estimation, sigma_test, possible_local_minimum)
if possible_local_minimum && obj.N > 15
if obj.display_screen ~= -1
figure(obj.display_screen)
clf(obj.display_screen)
end
% choose the most likely initial X
llh_X = [0,0,0,0];
% start from 0
obj.dynamics_model.initialise(0, initial_alpha, sigma_estimation, sigma_test);
for i=1:15
obj.dynamics_model.process_new_frame(obj.Y(i,:), obj.T(i));
end
llhs = obj.dynamics_model.compute_loglikelihood_dynamics_forced(1:15);
llh_X(1) = sum( llhs(isfinite(llhs)) );
% start from 0.25
obj.dynamics_model.initialise(0.25, initial_alpha, sigma_estimation, sigma_test);
for i=1:15
obj.dynamics_model.process_new_frame(obj.Y(i,:), obj.T(i));
end
llhs = obj.dynamics_model.compute_loglikelihood_dynamics_forced(1:15);
llh_X(2) = sum( llhs(isfinite(llhs)) );
% start from 0.5
obj.dynamics_model.initialise(0.5, initial_alpha, sigma_estimation, sigma_test);
for i=1:15
obj.dynamics_model.process_new_frame(obj.Y(i,:), obj.T(i));
end
llhs = obj.dynamics_model.compute_loglikelihood_dynamics_forced(1:15);
llh_X(3) = sum( llhs(isfinite(llhs)) );
% start from 0.75
obj.dynamics_model.initialise(0.75, initial_alpha, sigma_estimation, sigma_test);
for i=1:15
obj.dynamics_model.process_new_frame(obj.Y(i,:), obj.T(i));
end
llhs = obj.dynamics_model.compute_loglikelihood_dynamics_forced(1:15);
llh_X(4) = sum( llhs(isfinite(llhs)) );
% choose best
[~, ind] = max(llh_X);
x = [0,0.25,0.5,0.75];
x_ini = x(ind);
obj.dynamics_model.initialise(x_ini, initial_alpha, sigma_estimation, sigma_test);
else
%default
obj.dynamics_model.initialise(0, initial_alpha, sigma_estimation, sigma_test);
end
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment