75 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Matlab
		
	
	
		
		
			
		
	
	
			75 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Matlab
		
	
	
| 
								 | 
							
								%-----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								% eliminate
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								% the combined linear factor
							 | 
						||
| 
								 | 
							
								Ax2 = [
							 | 
						||
| 
								 | 
							
								-5., 0.
							 | 
						||
| 
								 | 
							
								+0.,-5.
							 | 
						||
| 
								 | 
							
								10., 0.
							 | 
						||
| 
								 | 
							
								+0.,10.
							 | 
						||
| 
								 | 
							
								];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Al1 = [
							 | 
						||
| 
								 | 
							
								5., 0.
							 | 
						||
| 
								 | 
							
								0., 5.
							 | 
						||
| 
								 | 
							
								0., 0.
							 | 
						||
| 
								 | 
							
								0., 0.
							 | 
						||
| 
								 | 
							
								];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Ax1 = [
							 | 
						||
| 
								 | 
							
								0.00,  0. % f4
							 | 
						||
| 
								 | 
							
								0.00,  0. % f4
							 | 
						||
| 
								 | 
							
								-10.,  0. % f2
							 | 
						||
| 
								 | 
							
								0.00,-10. % f2
							 | 
						||
| 
								 | 
							
								];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								% the RHS
							 | 
						||
| 
								 | 
							
								b2=[-1;1.5;2;-1];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								combined = GaussianFactor('x2', Ax2,  'l1', Al1, 'x1', Ax1, b2, 1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								% eliminate the combined factor
							 | 
						||
| 
								 | 
							
								% NOT WORKING
							 | 
						||
| 
								 | 
							
								% this is not working because there is no elimination function for a linear
							 | 
						||
| 
								 | 
							
								% factor. Just for the MutableGaussianFactor
							 | 
						||
| 
								 | 
							
								%[actualCG,actualLF] = combined.eliminate('x2');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								% create expected Conditional Gaussian
							 | 
						||
| 
								 | 
							
								R11 = [
							 | 
						||
| 
								 | 
							
								11.1803,  0.00
							 | 
						||
| 
								 | 
							
								0.00, 11.1803
							 | 
						||
| 
								 | 
							
								];
							 | 
						||
| 
								 | 
							
								S12 = [
							 | 
						||
| 
								 | 
							
								-2.23607, 0.00
							 | 
						||
| 
								 | 
							
								+0.00,-2.23607
							 | 
						||
| 
								 | 
							
								];
							 | 
						||
| 
								 | 
							
								S13 = [
							 | 
						||
| 
								 | 
							
								-8.94427, 0.00
							 | 
						||
| 
								 | 
							
								+0.00,-8.94427
							 | 
						||
| 
								 | 
							
								];
							 | 
						||
| 
								 | 
							
								d=[2.23607;-1.56525];
							 | 
						||
| 
								 | 
							
								expectedCG = GaussianConditional('x2',d,R11,'l1',S12,'x1',S13,[1 1]');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								% the expected linear factor
							 | 
						||
| 
								 | 
							
								Bl1 = [
							 | 
						||
| 
								 | 
							
								4.47214, 0.00
							 | 
						||
| 
								 | 
							
								0.00, 4.47214
							 | 
						||
| 
								 | 
							
								];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Bx1 = [
							 | 
						||
| 
								 | 
							
								% x1
							 | 
						||
| 
								 | 
							
								-4.47214,  0.00
							 | 
						||
| 
								 | 
							
								+0.00, -4.47214
							 | 
						||
| 
								 | 
							
								];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								% the RHS
							 | 
						||
| 
								 | 
							
								b1= [0.0;0.894427];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								expectedLF = GaussianFactor('l1', Bl1, 'x1', Bx1, b1, 1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								% check if the result matches
							 | 
						||
| 
								 | 
							
								% NOT WORKING 
							 | 
						||
| 
								 | 
							
								% because can not be computed with GaussianFactor.eliminate
							 | 
						||
| 
								 | 
							
								%if(~actualCG.equals(expectedCG)), warning('GTSAM:unit','~actualCG.equals(expectedCG)'); end
							 | 
						||
| 
								 | 
							
								%if(~actualLF.equals(expectedLF,1e-5)), warning('GTSAM:unit','~actualLF.equals(expectedLF,1e-5)');end
							 |