Daniel@0: function pot = CPD_to_scgpot(CPD, domain, ns, cnodes, evidence) Daniel@0: % CPD_TO_SCGPOT Convert a CPD to a CG potential, incorporating any evidence (discrete) Daniel@0: % pot = CPD_to_scgpot(CPD, domain, ns, cnodes, evidence) Daniel@0: % Daniel@0: % domain is the domain of CPD. Daniel@0: % node_sizes(i) is the size of node i. Daniel@0: % cnodes Daniel@0: % evidence{i} is the evidence on the i'th node. Daniel@0: Daniel@0: %odom = domain(~isemptycell(evidence(domain))); Daniel@0: Daniel@0: %vals = cat(1, evidence{odom}); Daniel@0: %map = find_equiv_posns(odom, domain); Daniel@0: %index = mk_multi_index(length(domain), map, vals); Daniel@0: CPT = CPD_to_CPT(CPD); Daniel@0: %CPT = CPT(index{:}); Daniel@0: CPT = CPT(:); Daniel@0: %ns(odom) = 1; Daniel@0: potarray = cell(1, length(CPT)); Daniel@0: for i=1:length(CPT) Daniel@0: %p = CPT(i); Daniel@0: potarray{i} = scgcpot(0, 0, CPT(i)); Daniel@0: %scpot{i} = scpot(0, 0); Daniel@0: end Daniel@0: pot = scgpot(domain, [], [], ns, potarray);