-
Notifications
You must be signed in to change notification settings - Fork 0
/
hmm_example.m
41 lines (34 loc) · 1.09 KB
/
hmm_example.m
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
clear;
%%This sequence was generated by two different random variables.
x(1:500) = randn(1, 500);
x(501:1000) = randn(1, 500) + 10;
%Input of HMM is a column vector
x = x';
%%We train a 5-state HMM with two random variables
hmm.K=5;
hmm=hmminit(x, hmm, 'full');
hmm=hmmtrain(x, length(x), hmm);
%%We decode the most likely sequence of states (random variables) in the
%%original sequence
[v, t, LL1] = hmmdecode(x, length(x), hmm);
%%This sequence was generated using the same random variables, but in a
%%different order
x2( [1:250 501:750] ) = randn(1, 500);
x2( [251:500 751:1000] ) = randn(1, 500) + 10;
x2 = x2';
%%We use the same HMM trained on the same random variables and then use it
%%over this new sequence
[v2, t, LL2] = hmmdecode(x2, length(x2), hmm);
%%This sequence is generated using different random variables
x3(1:500) = rand(1, 500) - 10;
x3(501:1000) = rand(1, 500) + 20;
x3 = x3';
[v3, t, LL3] = hmmdecode(x3, length(x3), hmm);
[v4, t, LL4] = hmmdecode( [x; x2; x3], 3000, hmm );
[v5, t, LL5] = hmmdecode( [x; x2], 2000, hmm );
%Print the likelihood of each sequence
LL1
LL2
LL3
LL4
LL5