| 
									
										
										
										
											2009-12-02 00:04:15 +08:00
										 |  |  | %----------------------------------------------------------------------- | 
					
						
							|  |  |  | % equals | 
					
						
							|  |  |  | fg = createGaussianFactorGraph(); | 
					
						
							|  |  |  | fg2 = createGaussianFactorGraph(); | 
					
						
							| 
									
										
										
										
											2009-12-12 12:11:42 +08:00
										 |  |  | CHECK('equals',fg.equals(fg2,1e-9)); | 
					
						
							| 
									
										
										
										
											2009-12-02 00:04:15 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | %----------------------------------------------------------------------- | 
					
						
							|  |  |  | % error | 
					
						
							| 
									
										
										
										
											2009-12-12 12:44:34 +08:00
										 |  |  | zero = createZeroDelta(); | 
					
						
							|  |  |  | actual = fg.error(zero); | 
					
						
							| 
									
										
										
										
											2009-12-02 00:04:15 +08:00
										 |  |  | DOUBLES_EQUAL( 5.625, actual, 1e-9 ); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | %----------------------------------------------------------------------- | 
					
						
							|  |  |  | % eliminate_x1 | 
					
						
							|  |  |  | fg = createGaussianFactorGraph(); | 
					
						
							|  |  |  | actual = fg.eliminateOne('x1'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | %----------------------------------------------------------------------- | 
					
						
							|  |  |  | % eliminate_x2 | 
					
						
							|  |  |  | fg = createGaussianFactorGraph(); | 
					
						
							|  |  |  | actual = fg.eliminateOne('x2'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | %----------------------------------------------------------------------- | 
					
						
							|  |  |  | % eliminateAll | 
					
						
							| 
									
										
										
										
											2009-12-12 12:11:42 +08:00
										 |  |  | sigma1=[.1;.1]; | 
					
						
							|  |  |  | I = eye(2); | 
					
						
							|  |  |  | R1 = I; | 
					
						
							| 
									
										
										
										
											2009-12-02 00:04:15 +08:00
										 |  |  | d1=[-.1;-.1]; | 
					
						
							| 
									
										
										
										
											2009-12-10 12:16:51 +08:00
										 |  |  | cg1 = GaussianConditional('x1',d1, R1,sigma1); | 
					
						
							| 
									
										
										
										
											2009-12-02 00:04:15 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-12 12:11:42 +08:00
										 |  |  | sigma2=[0.149071; 0.149071]; | 
					
						
							|  |  |  | R2 = I; | 
					
						
							|  |  |  | A1= -I; | 
					
						
							| 
									
										
										
										
											2009-12-02 00:04:15 +08:00
										 |  |  | d2=[0; .2]; | 
					
						
							| 
									
										
										
										
											2009-12-10 12:16:51 +08:00
										 |  |  | cg2 = GaussianConditional('l1',d2, R2, 'x1', A1,sigma2); | 
					
						
							| 
									
										
										
										
											2009-12-02 00:04:15 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-12 12:11:42 +08:00
										 |  |  | sigma3=[0.0894427; 0.0894427]; | 
					
						
							|  |  |  | R3 = I; | 
					
						
							|  |  |  | A21 = -0.2*I; | 
					
						
							|  |  |  | A22 = -0.8*I; | 
					
						
							| 
									
										
										
										
											2009-12-02 00:04:15 +08:00
										 |  |  | d3 =[.2; -.14]; | 
					
						
							| 
									
										
										
										
											2009-12-10 12:16:51 +08:00
										 |  |  | cg3 = GaussianConditional('x2',d3, R3, 'l1', A21, 'x1', A22, sigma3); | 
					
						
							| 
									
										
										
										
											2009-12-02 00:04:15 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | expected = GaussianBayesNet; | 
					
						
							|  |  |  | expected.push_back(cg3); | 
					
						
							| 
									
										
										
										
											2009-12-12 12:11:42 +08:00
										 |  |  | expected.push_back(cg2); | 
					
						
							|  |  |  | expected.push_back(cg1); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-02 00:04:15 +08:00
										 |  |  | % Check one ordering | 
					
						
							|  |  |  | fg1 = createGaussianFactorGraph(); | 
					
						
							|  |  |  | ord1 = Ordering; | 
					
						
							|  |  |  | ord1.push_back('x2'); | 
					
						
							|  |  |  | ord1.push_back('l1'); | 
					
						
							|  |  |  | ord1.push_back('x1'); | 
					
						
							|  |  |  | actual1 = fg1.eliminate_(ord1); | 
					
						
							| 
									
										
										
										
											2009-12-12 12:11:42 +08:00
										 |  |  | CHECK('eliminateAll', actual1.equals(expected,1e-5)); | 
					
						
							| 
									
										
										
										
											2009-12-02 00:04:15 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | %----------------------------------------------------------------------- | 
					
						
							|  |  |  | % matrix | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | fg = createGaussianFactorGraph(); | 
					
						
							|  |  |  | ord = Ordering; | 
					
						
							| 
									
										
										
										
											2009-12-12 12:44:34 +08:00
										 |  |  | ord.push_back('x1'); | 
					
						
							| 
									
										
										
										
											2009-12-02 00:04:15 +08:00
										 |  |  | ord.push_back('x2'); | 
					
						
							|  |  |  | ord.push_back('l1'); | 
					
						
							| 
									
										
										
										
											2009-12-12 12:11:42 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-12-12 12:44:34 +08:00
										 |  |  | [H,z] = fg.matrix(ord); | 
					
						
							| 
									
										
										
										
											2009-12-12 12:11:42 +08:00
										 |  |  | 
 |