summaryrefslogtreecommitdiffstats
path: root/SD-VBS/common/toolbox/MultiNcut/gaussian.m
diff options
context:
space:
mode:
Diffstat (limited to 'SD-VBS/common/toolbox/MultiNcut/gaussian.m')
-rwxr-xr-xSD-VBS/common/toolbox/MultiNcut/gaussian.m31
1 files changed, 31 insertions, 0 deletions
diff --git a/SD-VBS/common/toolbox/MultiNcut/gaussian.m b/SD-VBS/common/toolbox/MultiNcut/gaussian.m
new file mode 100755
index 0000000..509b129
--- /dev/null
+++ b/SD-VBS/common/toolbox/MultiNcut/gaussian.m
@@ -0,0 +1,31 @@
1function p=gaussian(x,m,C);
2% p=gaussian(x,m,C);
3%
4% Evaluate the multi-variate density with mean vector m and covariance
5% matrix C for the input vector x.
6%
7% p=gaussian(X,m,C);
8%
9% Vectorized version: Here X is a matrix of column vectors, and p is
10% a vector of probabilities for each vector.
11
12d=length(m);
13
14if size(x,1)~=d
15 x=x';
16end
17N=size(x,2);
18
19detC = det(C);
20if rcond(C)<eps
21% fprintf(1,'Covariance matrix close to singular. (gaussian.m)\n');
22 p = zeros(N,1);
23else
24 m=m(:);
25 M=m*ones(1,N);
26 denom=(2*pi)^(d/2)*sqrt(abs(detC));
27 mahal=sum(((x-M)'*inv(C)).*(x-M)',2); % Chris Bregler's trick
28 numer=exp(-0.5*mahal);
29 p=numer/denom;
30end
31