用MATLAB构建贝叶斯网络出错

clear all;
N=10;
dag=zeros(N,N);%创建无环图对应的矩阵
A=1;S=2;T=3;L=4;B=5;E=6;P=7;D=8;F=9;G=10;%按拓扑矩阵给各个节点编号
dag(A,S)=1;%按拓扑结构关系赋值
dag(A,T)=1;
dag(A,L)=1;
dag(S,B)=1;
dag(S,E)=1;
dag(T,P)=1;
dag(L,D)=1;
dag(L,F)=1;
dag(L,G)=1;
discrete_nodes = 1:N;%赋予各个节点类型,用1:N表示各个节点种类不同
node_sizes = 2*ones(1,N);%赋予节点的大小,节点独立地有几种可能
bnet=mk_bnet(dag,node_sizes,'names',{'A','S','T','L','B','E','P','D','F','G'},'discrete',discrete_nodes);%创建节点
bnet.CPD{A}=tabular_CPD(bnet,A,[0.99,0.01]);%赋概率值
bnet.CPD{S}=tabular_CPD(bnet,S,[0.99,0.95,0.01,0.05]);
bnet.CPD{T}=tabular_CPD(bnet,T,[0.9,0.2,0.3,0.1,0.1,0.8,0.7,0.9]);
bnet.CPD{L}=tabular_CPD(bnet,L,[0.99 0.9 0.01 0.1]);
bnet.CPD{B}=tabular_CPD(bnet,B,[0.9,0.2,0.3,0.1,0.1,0.8,0.7,0.9]);
bnet.CPD{E}=tabular_CPD(bnet,E,[0.9,0.2,0.3,0.1,0.1,0.8,0.7,0.9]);
bnet.CPD{P}=tabular_CPD(bnet,P,[1,0,0,0,0,1,1,1]);
bnet.CPD{D}=tabular_CPD(bnet,D,[0.9,0.2,0.3,0.1,0.1,0.8,0.7,0.9]);
bnet.CPD{F}=tabular_CPD(bnet,F,[0.9,0.2,0.3,0.1,0.1,0.8,0.7,0.9]);
bnet.CPD{G}=tabular_CPD(bnet,G,[0.9,0.2,0.3,0.1,0.1,0.8,0.7,0.9]);
draw_graph(dag)
engine=jtree_inf_engine(bnet);
evidence=cell(1,N);
[engine,loglik]=enter_evidence(engine,evidence);
m=marginal_nodes(engine,A);
m.T()

会报错

错误使用 reshape
要执行 RESHAPE,请勿更改元素数目。

出错 myreshape (line 10)
  T = reshape(T, sizes(:)');

出错 tabular_CPD (line 75)
  CPD.CPT = myreshape(args{1}, fam_sz);

出错 bishe20220505diyicichangshi (line 19)
bnet.CPD{T}=tabular_CPD(bnet,T,[0.9,0.2,0.3,0.1,0.1,0.8,0.7,0.9]);

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值