function dist = mahalan(X,Mean,Cov)
% MAHALAN Computes Mahalanobis distance.
%
% Synopsis:
% dist = mahalan(X,Mean,Cov)
%
% Description:
% It computes Mahalanobis distance between column vectors
% of matrix X and vector Mean with matrix Cov, i.e.,
%
% dist(i) = (X(:,i)-Mean)'*inv(C)*(X(:,i)-Mean)
%
% for all i=1:size(X,2).
%
% Input:
% X [dim x num_data] Input data.
% Mean [dim x 1] Vector.
% Cov [dim x dim] Matrix.
%
% Output:
% dist [1 x num_data] Mahalanobis distance.
%
% Example:
% It plots isolines of Mahalanobis distance.
%
% [Ax,Ay] = meshgrid(linspace(-5,5,100), linspace(-5,5,100));
% dist = mahalan([Ax(:)';Ay(:)'],[0;0],[1 0.5; 0.5 1]);
% figure; contour( Ax, Ay, reshape(dist,100,100));
%
% About: Statistical Pattern Recognition Toolbox
% (C) 1999-2003, Written by Vojtech Franc and Vaclav Hlavac
% <a href="http://www.cvut.cz">Czech Technical University Prague</a>
% <a href="http://www.feld.cvut.cz">Faculty of Electrical Engineering</a>
% <a href="http://cmp.felk.cvut.cz">Center for Machine Perception</a>
% Modifications:
% 28-apr-2004, VF
[dim, num_data] = size( X );
XC = X - repmat(Mean,1,num_data);
dist= sum((XC'*inv( Cov ).*XC')',1);
return;