2
我是新來學習Bayes Net Toolbox for MATLAB,我已經試過這樣:貝葉斯網絡MATLAB工具箱
N = 4;
dag = zeros(N, N);
C = 1; S = 2; R = 3; W = 4;
dag(C, [R S]) = 1;
dag(R, W) = 1;
dag(S, W) = 1;
discrete_nodes = 1:N;
node_sizes = [ 4 2 3 5];
onodes = [];
bNet = mk_bnet(dag, node_sizes, 'discrete', discrete_nodes, 'observed', onodes );
bNet.CPD{C} = tabular_CPD(bNet, C, 'CPT', [0.5 0.5]);
bNet.CPD{R} = tabular_CPD(bNet, R, 'CPT', [0.8 0.2 0.2 0.8 ]);
bNet.CPD{S} = tabular_CPD(bNet, S, 'CPT', [0.5 0.9 0.5 0.1]);
bNet.CPD{W} = tabular_CPD(bNet, W, 'CPT', [1 0.1 0.1 0.01 0 0.9 0.9 0.99 ]);
engine = jtree_inf_engine(bNet);
evidence = cell(1,N);
evidence{W} = 2;
[engine, loglik] = enter_evidence(engine, evidence);
marg = marginal_nodes(engine, S);
marg.T
p = marg.T(2)
但它不工作,它打印:
??? Error using ==> reshape
要重塑,元素的數量不能改變。
Error in ==> myreshape at 10
T = reshape(T, sizes(:)');
Error in ==> tabular_CPD.tabular_CPD at 90
CPD.CPT = myreshape(T, fam_sz);
Error in ==> bnet at 19
bNet.CPD{R} = tabular_CPD(bNet, R, 'CPT', [0.8 0.2 0.2 0.8 ]);