112 lines
2.4 KiB
Matlab
112 lines
2.4 KiB
Matlab
%-----------------------------------------------------------------------
|
|
% equals
|
|
fg = createGaussianFactorGraph();
|
|
fg2 = createGaussianFactorGraph();
|
|
CHECK('equals',fg.equals(fg2,1e-9));
|
|
|
|
%-----------------------------------------------------------------------
|
|
% error
|
|
cfg = createZeroDelta();
|
|
actual = fg.error(cfg);
|
|
DOUBLES_EQUAL( 5.625, actual, 1e-9 );
|
|
|
|
%-----------------------------------------------------------------------
|
|
% combine_factors_x1
|
|
fg = createGaussianFactorGraph();
|
|
actual = fg.combine_factors('x1');
|
|
Al1 = [
|
|
0., 0.
|
|
0., 0.
|
|
0., 0.
|
|
0., 0.
|
|
5., 0.
|
|
0., 5.
|
|
];
|
|
|
|
Ax1 = [
|
|
10., 0.
|
|
0.00, 10.
|
|
-10., 0.
|
|
0.00,-10.
|
|
-5., 0.
|
|
00., -5.
|
|
];
|
|
|
|
Ax2 = [
|
|
0., 0.
|
|
0., 0.
|
|
10., 0.
|
|
+0.,10.
|
|
0., 0.
|
|
0., 0.
|
|
];
|
|
|
|
b=[-1;-1;2;-1;0;1];
|
|
|
|
expected = GaussianFactor('l1',Al1,'x1',Ax1,'x2',Ax2,b);
|
|
CHECK('combine_factors_x1', actual.equals(expected,1e-9));
|
|
|
|
%-----------------------------------------------------------------------
|
|
% combine_factors_x2
|
|
fg = createGaussianFactorGraph();
|
|
actual = fg.combine_factors('x2');
|
|
|
|
%-----------------------------------------------------------------------
|
|
% eliminate_x1
|
|
fg = createGaussianFactorGraph();
|
|
actual = fg.eliminateOne('x1');
|
|
|
|
%-----------------------------------------------------------------------
|
|
% eliminate_x2
|
|
fg = createGaussianFactorGraph();
|
|
actual = fg.eliminateOne('x2');
|
|
|
|
%-----------------------------------------------------------------------
|
|
% eliminateAll
|
|
sigma1=.1;
|
|
R1 = eye(2);
|
|
d1=[-.1;-.1];
|
|
cg1 = ConditionalGaussian('x1',d1, R1,sigma1);
|
|
|
|
sigma2=0.149071;
|
|
R2 = eye(2);
|
|
A1= -eye(2);
|
|
d2=[0; .2];
|
|
cg2 = ConditionalGaussian('l1',d2, R2, 'x1', A1,sigma2);
|
|
|
|
sigma3=0.0894427;
|
|
R3 = eye(2);
|
|
A21 = [ -.2, 0.0
|
|
0.0, -.2];
|
|
A22 = [-.8, 0.0
|
|
0.0, -.8];
|
|
d3 =[.2; -.14];
|
|
cg3 = ConditionalGaussian('x2',d3, R3, 'l1', A21, 'x1', A22, sigma3);
|
|
|
|
expected = GaussianBayesNet;
|
|
expected.push_back(cg1);
|
|
expected.push_back(cg2);
|
|
expected.push_back(cg3);
|
|
expected.print_();
|
|
% Check one ordering
|
|
fg1 = createGaussianFactorGraph();
|
|
ord1 = Ordering;
|
|
ord1.push_back('x2');
|
|
ord1.push_back('l1');
|
|
ord1.push_back('x1');
|
|
actual1 = fg1.eliminate_(ord1);
|
|
actual1.print();
|
|
%CHECK('eliminateAll', actual1.equals(expected));
|
|
|
|
%-----------------------------------------------------------------------
|
|
% matrix
|
|
|
|
fg = createGaussianFactorGraph();
|
|
ord = Ordering;
|
|
ord.push_back('x2');
|
|
ord.push_back('l1');
|
|
ord.push_back('x1');
|
|
|
|
A = fg.matrix(ord);
|
|
|