wolffd@0: function m = pot_to_marginal(pot) wolffd@0: % POT_TO_MARGINAL Convert a cgpot to a marginal structure. wolffd@0: % m = pot_to_marginal(pot) wolffd@0: wolffd@0: pot = cg_can_to_mom(pot); wolffd@0: m.domain = pot.domain; wolffd@0: n = pot.csize; wolffd@0: d = length(pot.mom); wolffd@0: if n==0 wolffd@0: m.mu = []; wolffd@0: m.Sigma = []; wolffd@0: else wolffd@0: m.mu = zeros(n, d); wolffd@0: m.Sigma = zeros(n, n, d); wolffd@0: end wolffd@0: m.T = 0*myones(pot.dsizes); wolffd@0: for i=1:pot.dsize wolffd@0: s = struct(pot.mom{i}); % violate privacy of object wolffd@0: if n > 0 wolffd@0: m.mu(:,i) = s.mu; wolffd@0: m.Sigma(:,:,i) = s.Sigma; wolffd@0: end wolffd@0: m.T(i) = exp(s.logp); wolffd@0: end wolffd@0: if isvectorBNT(m.T) wolffd@0: m.T = m.T(:)'; wolffd@0: end