Dynamic 基于Matlab贝叶斯网络工具箱的动态贝叶斯网络推理

Dynamic 基于Matlab贝叶斯网络工具箱的动态贝叶斯网络推理,dynamic,matlab,bayesian-networks,inference,Dynamic,Matlab,Bayesian Networks,Inference,我正在从事一个自动和弦识别项目,该项目使用2-TBN动态贝叶斯网络,其中有4个离散隐藏节点和2个连续可观察节点 我使用bayes net工具箱创建了模型,这方面没有问题。 第五和第六个节点分别为13和12维的可观察节点。 我正在尝试使用工具箱中我无法使用的推理部分。我写了下面的代码,它没有给出正确的输出 function [path,data] = mydecode(bnet,mean,sigma,dat) dataaa=dat'; data=dataaa(1:12,:); %chord di

我正在从事一个自动和弦识别项目,该项目使用2-TBN动态贝叶斯网络,其中有4个离散隐藏节点和2个连续可观察节点

我使用bayes net工具箱创建了模型,这方面没有问题。 第五和第六个节点分别为13和12维的可观察节点。 我正在尝试使用工具箱中我无法使用的推理部分。我写了下面的代码,它没有给出正确的输出

function [path,data] = mydecode(bnet,mean,sigma,dat)

dataaa=dat';
data=dataaa(1:12,:);
%chord dimension
chord=109;
%observed chroma dimension
obs=12;
evidence = cell(6,T);
for i=1:T
   evidence(6,i)={dat(i,1:12)} ;
end 
for i=1:T
   evidence(5,i)={dat(i,13:25)} ;
end

engine = {};
engine{end+1} = smoother_engine(jtree_2TBN_inf_engine(bnet));
disp(engine);

mpe = find_mpe(engine{1}, evidence);

end
请告诉我如何进行推断。

参考:

代码:

   engine = jtree_dbn_inf_engine(bnet);
   evidence = cell(N,T);
   [engine, ll] = enter_evidence(engine, evidence);
   evidence(4,1) = {2};
   marg = marginal_nodes(engine, 4, 2);  % This is like querying node 4 in time-slice 2
   marg.T