summaryrefslogtreecommitdiffstats
path: root/SD-VBS/common/toolbox/MultiNcut/gaussian.m
diff options
context:
space:
mode:
authorLeo Chan <leochanj@live.unc.edu>2020-10-22 01:53:21 -0400
committerJoshua Bakita <jbakita@cs.unc.edu>2020-10-22 01:56:35 -0400
commitd17b33131c14864bd1eae275f49a3f148e21cf29 (patch)
tree0d8f77922e8d193cb0f6edab83018f057aad64a0 /SD-VBS/common/toolbox/MultiNcut/gaussian.m
parent601ed25a4c5b66cb75315832c15613a727db2c26 (diff)
Squashed commit of the sb-vbs branch.
Includes the SD-VBS benchmarks modified to: - Use libextra to loop as realtime jobs - Preallocate memory before starting their main computation - Accept input via stdin instead of via argc Does not include the SD-VBS matlab code. Fixes libextra execution in LITMUS^RT.
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