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 = LinearFactor('x2', Ax2,  'l1', Al1, 'x1', Ax1, b2);
 | |
| 
 | |
| % eliminate the combined factor
 | |
| % NOT WORKING
 | |
| % this is not working because there is no elimination function for a linear
 | |
| % factor. Just for the MutableLinearFactor
 | |
| %[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 = ConditionalGaussian(d,R11,'l1',S12,'x1',S13);
 | |
| 
 | |
| % 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 = LinearFactor('l1', Bl1, 'x1', Bx1, b1);
 | |
| 
 | |
| % check if the result matches
 | |
| % NOT WORKING 
 | |
| % because can not be computed with LinearFactor.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
 |