www.pudn.com > gmm_utilities.zip > gmm_multiply.m


function gr = gmm_multiply(g1, g2) 
 
D = size(g1.x, 1); 
M = size(g1.x, 2); 
N = size(g2.x, 2); 
R = M*N; 
 
gr.x = zeros(D,R); 
gr.P = zeros(D,D,R); 
gr.w = zeros(1,R); 
 
k=1; 
for i=1:M 
    xi = g1.x(:,i); 
    Pi = g1.P(:,:,i); 
    wi = g1.w(i);  
     
    for j=1:N 
        [gr.x(:,k), gr.P(:,:,k), gr.w(k)] = ... 
            gauss_multiply(xi, Pi, g2.x(:,j), g2.P(:,:,j)); 
        gr.w(k) = gr.w(k)*wi*g2.w(j); 
         
        k = k+1; 
    end 
end