wolffd@0: N = 1; % regular HMM wolffd@0: Q = 2; wolffd@0: ss = 2; wolffd@0: hnodes = 1; wolffd@0: onodes = 2; wolffd@0: wolffd@0: rand('state', 0); wolffd@0: randn('state', 0); wolffd@0: O = 2; wolffd@0: discrete_obs = 1; wolffd@0: bnet = mk_chmm(N, Q, O, discrete_obs); wolffd@0: ns = bnet.node_sizes_slice; wolffd@0: wolffd@0: engine = hmm_inf_engine(bnet, onodes); wolffd@0: wolffd@0: T = 4; wolffd@0: ev = cell(ss,T); wolffd@0: ev(onodes,:) = num2cell(sample_discrete([0.5 0.5], N, T)); wolffd@0: wolffd@0: wolffd@0: engine = dbn_init_bel(engine); wolffd@0: for t=1:T wolffd@0: if t==1 wolffd@0: [engine, ll(t)] = dbn_update_bel1(engine, ev(:,t)); wolffd@0: else wolffd@0: [engine, ll(t)] = dbn_update_bel(engine, ev(:,t-1:t)); wolffd@0: end wolffd@0: % one-step ahead prediction wolffd@0: lag = 1; wolffd@0: engine2 = dbn_predict_bel(engine, lag); wolffd@0: marg = dbn_marginal_from_bel(engine2, 1) wolffd@0: marg = dbn_marginal_from_bel(engine2, 2) wolffd@0: end