0001 function [g d]=Product(g1,g2)
0002
0003
0004
0005
0006
0007
0008
0009 if g1.dim~=g2.dim
0010 error('Gaussians with different dimensions in Gaussian product');
0011 end
0012
0013 iS=g1.iS+g2.iS;
0014
0015 R=chol(iS);
0016 iR=R\eye(size(R));
0017 S=iR*iR';
0018
0019
0020 g.m=S*(g1.iS*g1.m+g2.iS*g2.m);
0021 g.dim=g1.dim;
0022 g.S=S;
0023 g.d=1/(prod(diag(R))^2);
0024 g.iS=iS;
0025 g.ct=1/sqrt(((2*pi)^g.dim)*g.d);
0026
0027 g=class(g,'Gaussian');
0028
0029 d=ProductNormFactor(g1,g2);