32 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Matlab
		
	
	
			
		
		
	
	
			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 |