Borrar filtros
Borrar filtros

why mvnpdf returns complex values?

3 visualizaciones (últimos 30 días)
Nicola Donelli
Nicola Donelli el 14 de En. de 2015
Respondida: Nicola Donelli el 14 de En. de 2015
Hi, can anybody tell me why sometimes (i.e. with some Variance Matrices) the mvnpdf returns complex values? As far as I know the multivariate normal density is a function from R^d to R...
Thanks

Respuesta aceptada

Torsten
Torsten el 14 de En. de 2015
% FUNCTION Y = MVNPDF(X, [MU], [SIGMA])
%
% X & MU: vectors of same size
% sigma: square matrix
%
% default MU = zeros(size(X))
% SIGMA = diag(ones(size(X)));
function y = mvnpdf(x,mu,sigma)
if nargin < 2
mu = zeros(size(x));
end
if nargin < 3
sigma = diag(ones(size(x)));
end
x = x(:); % Column vector
mu = mu(:); % Column vector
% Check dimensions
n = length(x);
if size(mu,1) ~= n | size(mu,2) ~= 1 | size(sigma,1) ~= n | ...
size(sigma,2) ~= n
error('Parameter dimensions must agree');
end
a = (2*pi)^-(n/2) * det(sigma)^-.5;
b = exp(-.5 * (x-mu).' * inv(sigma) * (x-mu));
y = a * b;
Just check by your own which Expression (a or b) becomes complex in your application.
Best wishes
Torsten.
  1 comentario
Torsten
Torsten el 14 de En. de 2015
Are you sure the covariance matrices you supply are all positive definite ?
Otherwise, the factor "a" may become complex.
Best wishes
Torsten.

Iniciar sesión para comentar.

Más respuestas (1)

Nicola Donelli
Nicola Donelli el 14 de En. de 2015
Thanks a lot. I simply unintentionally used a complex value as input.
Sorry for the silly question!

Categorías

Más información sobre Arduino Hardware en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by