% FUNCTION Y = LOG_MVNPDF(X, [MU], [COV]) % % X & MU: vectors of same size % COV: square matrix (covariance matrix) % % default MU = zeros(size(X)) % COV = diag(ones(size(X))); function y = log_mvnpdf(x,mu,cov) if nargin < 2 mu = zeros(size(x)); end if nargin < 3 cov = diag(ones(size(x))); end x = x(:); % Column vector mu = mu(:); % Column vector % Check dimensions n = length(x); if size(mu,1) ~= n | size(mu,2) ~= 1 | size(cov,1) ~= n | ... size(cov,2) ~= n error('Parameter dimensions must agree'); end a = -(n/2) * log(2*pi) - .5 * log(det(cov)); b = (-.5 * (x-mu).' * inv(cov) * (x-mu)); y = a + b;