summaryrefslogtreecommitdiffstats
path: root/SD-VBS/common/toolbox/MultiNcut/gaussian.m
diff options
context:
space:
mode:
authorleochanj105 <leochanj@live.unc.edu>2020-10-19 23:09:30 -0400
committerleochanj105 <leochanj@live.unc.edu>2020-10-20 02:40:39 -0400
commitf618466c25d43f3bae9e40920273bf77de1e1149 (patch)
tree460e739e2165b8a9c37a9c7ab1b60f5874903543 /SD-VBS/common/toolbox/MultiNcut/gaussian.m
parent47ced4e96bbb782b9e780e8f2cfc637b2c21ff44 (diff)
initial sd-vbs
initial sd-vbs add sd-vbs sd-vbs
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