gtsam/matlab/gtsam_tests/thinTreeBayesNet.m

32 lines
1.1 KiB
Matlab

function [bayesNet, tree] = thinTreeBayesNet(depth,width)
% thinTreeBayesNet
import gtsam.*
bayesNet = GaussianBayesNet;
tree = thinTree(depth,width);
% Add root to the Bayes net
model = noiseModel.Isotropic.Sigma(1, 3*rand(1));
gc = gtsam.GaussianConditional(1, 5*rand(1), 5*rand(1), model);
bayesNet.push_back(gc);
n=tree.getNumberOfElements();
for i=2:n
% Getting the parents of that node
parents = tree.getParents(i);
di = tree.getNodeDepth(i);
% Create and link the corresponding GaussianConditionals
if tree.getW == 1 || di == 2
% Creation of single-parent GaussianConditional
model = noiseModel.Isotropic.Sigma(1, 5*rand(1));
gc = gtsam.GaussianConditional(n-i, 5*rand(1), 5*rand(1), n-parents(1), 5*rand(1), model);
elseif tree.getW == 2 || di == 3
% GaussianConditionalj associated with the second parent
model = noiseModel.Isotropic.Sigma(1, 5*rand(1));
gc = gtsam.GaussianConditional(n-i, 5*rand(1), 5*rand(1), n-parents(1), 5*rand(1), n-parents(2), 5*rand(1), model);
end
% Add conditional to the Bayes net
bayesNet.push_back(gc);
end
end