wolffd@0: function CPDpot = convert_dbn_CPDs_to_pots(bnet, evidence, pot_type, softCPDpot) wolffd@0: % CONVERT_DBN_CPDS_TO_POTS Convert CPDs of (possibly instantiated) DBN nodes to potentials wolffd@0: % CPDpot = convert_dbn_CPDs_to_pots(bnet, evidence, pot_type, softCPDpot) wolffd@0: % wolffd@0: % CPDpot{n,t} is a potential containing P(n,t|pa(n,t), ev) wolffd@0: % softCPDpot{n,t} is a potential containing P(n,t|pa(n,t), ev) insted of using n's CPD wolffd@0: wolffd@0: [ss T] = size(evidence); wolffd@0: wolffd@0: if nargin < 4, softCPDpot = cell(ss,T); end wolffd@0: CPDpot = softCPDpot; wolffd@0: wolffd@0: % Convert CPDs of instantiated nodes to potential form wolffd@0: t = 1; wolffd@0: for n=1:ss wolffd@0: fam = family(bnet.dag, n); wolffd@0: e = bnet.equiv_class(n, 1); wolffd@0: if isempty(softCPDpot{n,t}) wolffd@0: CPDpot{n,t} = convert_to_pot(bnet.CPD{e}, pot_type, fam(:), evidence(:,1)); wolffd@0: end wolffd@0: end wolffd@0: for n=1:ss wolffd@0: fam = family(bnet.dag, n, 2); wolffd@0: e = bnet.equiv_class(n, 2); wolffd@0: for t=2:T wolffd@0: if isempty(softCPDpot{n,t}) wolffd@0: CPDpot{n,t} = convert_to_pot(bnet.CPD{e}, pot_type, fam(:), evidence(:,t-1:t)); wolffd@0: end wolffd@0: end wolffd@0: end