dirichlet_logProb.m

Revision 1 - 12/4/07 at 11:37 am by brice.semmens

Back to revision history for dirichlet_logProb.m
This file is part of the project MixSIR
function p = dirichlet_logProb(a, data)
% DIRICHLET_LOGPROB  Evaluate a Dirichlet distribution.
%
% DIRICHLET_LOGPROB(a,data) returns a vector containing the log-probability
% of each vector in DATA, under the Dirichlet distribution with parameter A.
% DATA is a matrix of probability vectors.
% If A is a row vector, then the vectors are the rows, otherwise columns.

row = (rows(a) == 1);

% add a dummy row or col
if row
  if cols(data) == length(a)-1
    data = [data 1-row_sum(data)];
  end
else
  if rows(data) == length(a)-1
    data = [data; 1-col_sum(data)];
  end
end

w = warning;
warning off
if row
  p = log(data) * (a-1)';
else
  p = (a-1)' * log(data);
end
p = p + gammaln(sum(a)) - sum(gammaln(a));
warning(w)

if row
  [N,K] = size(data);
else
  [K,N] = size(data);
end
Sculpin 0.2 | xhtml | problems or comments? | report bugs