【发布时间】:2014-04-15 01:05:21
【问题描述】:
我正在尝试在 MATLAB 中计算 log(N(x | mu, sigma))
x 是数据向量(Dimensions D x 1) , mu(Dimensions D x 1) 是均值, sigma(Dimensions D x D) 是协方差。
我目前的实现是
function [loggaussian] = logmvnpdf(x,mu,Sigma)
[D,~] = size(x);
const = -0.5 * D * log(2*pi);
term1 = -0.5 * ((x - mu)' * (inv(Sigma) * (x - mu)));
term2 = - 0.5 * logdet(Sigma);
loggaussian = const + term1 + term2;
end
function y = logdet(A)
y = log(det(A));
end
在某些情况下我会收到错误
Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND =
NaN
我知道你会指出我的数据不一致,但我需要实现该函数,以便我可以获得最佳近似值而不是抛出警告。 .如何确保始终获得价值。
【问题讨论】: