blob: 3c219c24da196e2171aa3ccaaaf116f9a97483c1 (
plain)
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
|
function sample = sample_bnet(bnet, varargin)
% SAMPLE_BNET Generate a random sample from a Bayes net.
% SAMPLE = SAMPLE_BNET(BNET, ...)
%
% sample{i} contains the value of the i'th node.
% i.e., the result is an Nx1 cell array.
% Nodes are sampled in the order given by bnet.order.
%
% Optional arguments:
%
% evidence - initial evidence; if evidence{i} is non-empty, node i won't be sampled.
% set defauly params
n = length(bnet.dag);
sample = cell(n,1);
% get optional params
args = varargin;
nargs = length(args);
for i=1:2:nargs
switch args{i},
case 'evidence', sample = args{i+1}(:);
otherwise, error(['unrecognized argument ' args{i}])
end
end
for j=bnet.order(:)'
if isempty(sample{j})
%ps = parents(bnet.dag, j);
ps = bnet.parents{j};
e = bnet.equiv_class(j);
sample{j} = sample_node(bnet.CPD{e}, sample(ps));
end
end
|