wolffd@0: % Inference on a conditional Gaussian model wolffd@0: wolffd@0: % Make the following polytree, where all arcs point down wolffd@0: wolffd@0: % 1 2 wolffd@0: % \ / wolffd@0: % 3 wolffd@0: % / \ wolffd@0: % 4 5 wolffd@0: wolffd@0: N = 5; wolffd@0: dag = zeros(N,N); wolffd@0: dag(1,3) = 1; wolffd@0: dag(2,3) = 1; wolffd@0: dag(3, [4 5]) = 1; wolffd@0: wolffd@0: ns = [2 1 2 1 2]; wolffd@0: wolffd@0: dnodes = 1; wolffd@0: %onodes = [1 5]; wolffd@0: bnet = mk_bnet(dag, ns, 'discrete', dnodes, 'observed', dnodes); wolffd@0: wolffd@0: bnet.CPD{1} = tabular_CPD(bnet, 1); wolffd@0: for i=2:N wolffd@0: bnet.CPD{i} = gaussian_CPD(bnet, i); wolffd@0: end wolffd@0: wolffd@0: engine = {}; wolffd@0: engine{end+1} = jtree_inf_engine(bnet); wolffd@0: engine{end+1} = pearl_inf_engine(bnet, 'protocol', 'parallel'); wolffd@0: wolffd@0: [time, engine] = cmp_inference_static(bnet, engine, 'maximize', 0, 'check_ll', 0, ... wolffd@0: 'singletons_only', 0, 'observed', [1 3]);