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