wolffd@0: function L = log_prior(CPD) wolffd@0: % LOG_PRIOR Return log P(theta) for a tabular CPD wolffd@0: % L = log_prior(CPD) wolffd@0: wolffd@0: switch CPD.prior_type wolffd@0: case 'none', wolffd@0: L = 0; wolffd@0: case 'dirichlet', wolffd@0: D = CPD.dirichlet(:); wolffd@0: L = sum(log(D + (D==0))); wolffd@0: case 'entropic', wolffd@0: % log-prior = log exp(-H(theta)) = sum_i theta_i log (theta_i) wolffd@0: fam_sz = CPD.sizes; wolffd@0: psz = prod(fam_sz(1:end-1)); wolffd@0: ssz = fam_sz(end); wolffd@0: C = reshape(CPD.CPT, psz, ssz); wolffd@0: L = sum(sum(C .* log(C + (C==0)))); wolffd@0: end