63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Matlab
		
	
	
		
		
			
		
	
	
			63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Matlab
		
	
	
| 
								 | 
							
								%-----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								% equals
							 | 
						||
| 
								 | 
							
								fg = createGaussianFactorGraph();
							 | 
						||
| 
								 | 
							
								fg2 = createGaussianFactorGraph();
							 | 
						||
| 
								 | 
							
								CHECK('equals',fg.equals(fg2,1e-9));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%-----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								% error
							 | 
						||
| 
								 | 
							
								zero = createZeroDelta();
							 | 
						||
| 
								 | 
							
								actual = fg.error(zero);
							 | 
						||
| 
								 | 
							
								DOUBLES_EQUAL( 5.625, actual, 1e-9 );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%-----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								% eliminate_x1
							 | 
						||
| 
								 | 
							
								fg = createGaussianFactorGraph();
							 | 
						||
| 
								 | 
							
								actual = fg.eliminateOne('x1');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%-----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								% eliminate_x2
							 | 
						||
| 
								 | 
							
								fg = createGaussianFactorGraph();
							 | 
						||
| 
								 | 
							
								actual = fg.eliminateOne('x2');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%-----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								% eliminateAll
							 | 
						||
| 
								 | 
							
								I = eye(2);
							 | 
						||
| 
								 | 
							
								cg1 = GaussianConditional('x1',[-1;-1], 10*I,[1;1]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								sig1=0.149071;
							 | 
						||
| 
								 | 
							
								d2=[0; .2]/sig1;
							 | 
						||
| 
								 | 
							
								cg2 = GaussianConditional('l1', d2, I/sig1, 'x1', -I/sig1, [1;1]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								sig2 = 0.0894427;
							 | 
						||
| 
								 | 
							
								A21 = -0.2*I/sig2;
							 | 
						||
| 
								 | 
							
								A22 = -0.8*I/sig2;
							 | 
						||
| 
								 | 
							
								d3 =[.2; -.14]/sig2;
							 | 
						||
| 
								 | 
							
								cg3 = GaussianConditional('x2',d3, I/sig2, 'l1', A21, 'x1', A22, [1;1]);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								expected = GaussianBayesNet;
							 | 
						||
| 
								 | 
							
								expected.push_back(cg3);
							 | 
						||
| 
								 | 
							
								expected.push_back(cg2);
							 | 
						||
| 
								 | 
							
								expected.push_back(cg1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								% Check one ordering
							 | 
						||
| 
								 | 
							
								fg1 = createGaussianFactorGraph();
							 | 
						||
| 
								 | 
							
								ord1 = Ordering;
							 | 
						||
| 
								 | 
							
								ord1.push_back('x2');
							 | 
						||
| 
								 | 
							
								ord1.push_back('l1');
							 | 
						||
| 
								 | 
							
								ord1.push_back('x1');
							 | 
						||
| 
								 | 
							
								actual1 = fg1.eliminate_(ord1);
							 | 
						||
| 
								 | 
							
								CHECK('eliminateAll', actual1.equals(expected,1e-5));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								%-----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								% matrix
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								fg = createGaussianFactorGraph();
							 | 
						||
| 
								 | 
							
								ord = Ordering;
							 | 
						||
| 
								 | 
							
								ord.push_back('x1');
							 | 
						||
| 
								 | 
							
								ord.push_back('x2');
							 | 
						||
| 
								 | 
							
								ord.push_back('l1');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[H,z] = fg.matrix(ord);
							 | 
						||
| 
								 | 
							
								
							 |