Initial commit
[pftoolbox.git] / noise / @gauss / pdf.m
blob58efe08bb9717c6e6954d50820bde00e8d049eb5
1 function p = pdf(OBJ, t, x)
2 % PDF  Compute pdf for a Gaussian distribution
3 %    P = PDF(W, T, X) pdf of W at time T for values X. T is ignored.
4   
5 % Copyright (C) 2005  Gustaf Hendeby
7 % This program is free software; you can redistribute it and/or
8 % modify it under the terms of the GNU General Public License
9 % as published by the Free Software Foundation; either version 2
10 % of the License, or (at your option) any later version.
12 % This program is distributed in the hope that it will be useful,
13 % but WITHOUT ANY WARRANTY; without even the implied warranty of
14 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 % GNU General Public License for more details.
17 % You should have received a copy of the GNU General Public License
18 % along with this program; if not, write to the Free Software
19 % Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.  
20   
21   % FIXME: Improve input check
22   error(nargchk(3, 3, nargin));
23   
24   if OBJ.n == 1
25     xbar = x - OBJ.mu;
26     p = (2*pi*OBJ.R)^-.5 * exp(-0.5*xbar./OBJ.R.*xbar);
27   else
28     % FIXME:  Consider the treatment of this case.
29     N = size(x);
30     if N(1) ~= OBJ.n || length(N) ~= 2
31       error('Cannot compute PDF for arrays of N-dim Gaussians.');
32     end
33     mu = OBJ.mu; R = OBJ.R;
34     for i = 1:N(2)
35       xbar = x(:, i) - mu;
36       p(i) = exp(-0.5*xbar'/OBJ.R*xbar);
37     end
38     p = p*(2*pi)^(-.5*OBJ.n)*det(OBJ.R)^(-.5);
39   end
40