wolffd@0: function [bnet, onodes]=hme_topobuilder(nodes_info); wolffd@0: % wolffd@0: % HME topology builder wolffd@0: % wolffd@0: % ---------------------------------------------------------------------------------------------------- wolffd@0: % -> pierpaolo_b@hotmail.com or -> pampo@interfree.it wolffd@0: % ---------------------------------------------------------------------------------------------------- wolffd@0: wolffd@0: nodes_num=size(nodes_info,2); wolffd@0: dag = zeros(nodes_num); wolffd@0: list=[1:nodes_num]; wolffd@0: for i=1:(nodes_num-1) wolffd@0: app=[]; wolffd@0: app=list((i+1):end); wolffd@0: dag(i,app) = 1; wolffd@0: end wolffd@0: onodes = [1 nodes_num]; wolffd@0: dnodes = list(2:end-1); wolffd@0: if nodes_info(1,end)>0, wolffd@0: dnodes=[dnodes nodes_num]; wolffd@0: end wolffd@0: ns = nodes_info(2,:); wolffd@0: wolffd@0: bnet = mk_bnet(dag, ns, dnodes); wolffd@0: clamped = 0; wolffd@0: wolffd@0: bnet.CPD{1} = root_CPD(bnet, 1); wolffd@0: wolffd@0: rand('state', 50); wolffd@0: randn('state', 50); wolffd@0: wolffd@0: for i=2:nodes_num, wolffd@0: if (nodes_info(1,i)==0)&(nodes_info(4,i)==1), wolffd@0: bnet.CPD{i} = gaussian_CPD(bnet, i, [], [], [], 'full'); wolffd@0: elseif (nodes_info(1,i)==0)&(nodes_info(4,i)==2), wolffd@0: bnet.CPD{i} = gaussian_CPD(bnet, i, [], [], [], 'diag'); wolffd@0: elseif (nodes_info(1,i)==0)&(nodes_info(4,i)==3), wolffd@0: bnet.CPD{i} = gaussian_CPD(bnet, i, [], [], [], 'full', 'tied'); wolffd@0: elseif (nodes_info(1,i)==0)&(nodes_info(4,i)==4), wolffd@0: bnet.CPD{i} = gaussian_CPD(bnet, i, [], [], [], 'diag', 'tied'); wolffd@0: elseif nodes_info(1,i)==1, wolffd@0: %bnet.CPD{i} = dsoftmax_CPD(bnet, i, [], [], clamped, nodes_info(4,i)); wolffd@0: bnet.CPD{i} = softmax_CPD(bnet, i, 'clamped', clamped, 'max_iter', nodes_info(4,i)); wolffd@0: else wolffd@0: bnet.CPD{i} = mlp_CPD(bnet, i, nodes_info(3,i), [], [], [], [], clamped, nodes_info(4,i)); wolffd@0: end wolffd@0: end