gaussian_prob.m
上传用户:mozhenmi
上传日期:2008-02-18
资源大小:13k
文件大小:1k
源码类别:

其他小程序

开发平台:

Matlab

  1. function p=gaussian_prob(x, m, C, use_log)
  2. % p=gaussian_prob(x, m, C, use_log)
  3. %
  4. % Evaluate the multi-variate density with mean vector m and covariance
  5. % matrix C for the input vector x.
  6. % Vectorized version: Here X is a matrix of column vectors, and p is 
  7. % a vector of probabilities for each vector.
  8. if nargin<4, use_log = 0; end
  9. d=length(m);
  10. if size(x,1)~=d
  11.    x=x';
  12. end
  13. N=size(x,2);
  14. m=m(:);
  15. M=m*ones(1,N);
  16. denom=(2*pi)^(d/2)*sqrt(abs(det(C)));
  17. invC = inv(C);
  18. mahal=sum(((x-M)'*invC).*(x-M)',2);   % Chris Bregler's trick
  19. if use_log
  20.   p = -0.5*mahal - log(denom);
  21. else
  22.   numer=exp(-0.5*mahal);
  23.   p=numer/denom;
  24. end