You need to sign in or sign up before continuing.
Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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