Mercurial > hg > camir-aes2014
comparison toolboxes/FullBNT-1.0.7/bnt/inference/static/@global_joint_inf_engine/find_mpe.m @ 0:e9a9cd732c1e tip
first hg version after svn
author | wolffd |
---|---|
date | Tue, 10 Feb 2015 15:05:51 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:e9a9cd732c1e |
---|---|
1 function [mpe, ll] = find_mpe(engine, evidence) | |
2 % FIND_MPE_GLOBAL Compute the most probable explanation(s) from the global joint | |
3 % [mpe, ll] = find_mpe(engine, evidence) | |
4 % | |
5 % mpe(k,i) is the most probable value of node i in the k'th global mode (cell array) | |
6 % | |
7 % We assume all nodes are discrete | |
8 | |
9 %engine = global_joint_inf_engine(bnet); | |
10 bnet = bnet_from_engine(engine); | |
11 engine = enter_evidence(engine, evidence); | |
12 S1 = struct(engine); % violate object privacy | |
13 S2 = struct(S1.jpot); % joint potential | |
14 prob = max(S2.T(:)); | |
15 modes = find(S2.T(:) == prob); | |
16 | |
17 ens = bnet.node_sizes; | |
18 onodes = find(~isemptycell(evidence)); | |
19 ens(onodes) = 1; | |
20 mpe = ind2subv(ens, modes); | |
21 for k=1:length(modes) | |
22 for i=onodes(:)' | |
23 mpe(k,i) = evidence{i}; | |
24 end | |
25 end | |
26 ll = log(prob); | |
27 | |
28 mpe = num2cell(mpe); |