计算从点p到高维高斯(M,V)的距离

时间:2010-12-15 21:26:53

标签: matlab distance gaussian ellipse

我有一个具有平均M和协方差矩阵V的高维高斯。我想计算从点p到M的距离,考虑到V(我猜它是从M的标准偏差中得到的距离?)。

差别地说,我从M取一个椭圆一个sigma,并想检查p是否在椭圆内。

3 个答案:

答案 0 :(得分:2)

考虑计算给定正态分布的点的概率:

M = [1 -1];             %# mean vector
V = [.9 .4; .4 .3];     %# covariance matrix
p = [0.5 -1.5];         %# 2d-point
prob = mvnpdf(p,M,V);   %# probability P(p|mu,cov)

统计工具箱

提供了函数MVNPDF

答案 1 :(得分:2)

如果V是高斯的有效协方差矩阵,则它是对称正定的,因此定义了有效的标量积。顺便说一句,inv(V)也可以。

因此,假设M和p是列向量,您可以将距离定义为:

d1 = sqrt((M-p)'*V*(M-p));
d2 = sqrt((M-p)'*inv(V)*(M-p));

Matlab的方法是将d2重写为(可能是一些不必要的括号):

d2 = sqrt((M-p)'*(V\(M-p)));

好处是当V是单位矩阵时,d1==d2并且它对应于经典的欧几里德距离。要找到你必须使用d1d2作为练习(抱歉,我的工作的一部分是教学)。写出多维高斯公式并将其与1D情况进行比较,因为多维情况只是1D的特定情况(或执行一些数值实验)。

注意:在非常高维度的空间或很多要测试的点上,你可能会发现一个聪明/快速的方法来表示V的特征向量和特征值(即椭球的主轴及其相应的方差)。

希望这有帮助。

一个。

答案 2 :(得分:0)

也许我完全不在了,但这不仅仅是要求每个维度:我是否在sigma里面?

伪代码:

foreach(dimension d)
    (M(d) - sigma(d) < p(d) < M(d) + sigma(d)) ?

因为你想知道p是否在高斯的每个维度内。所以实际上,这只是一个空间问题而且你的高斯不需要对它做任何事情(M和sigma只是距离)。

在MATLAB中你可以尝试类似的东西:

all(M - sigma < p < M + sigma)

到那个地方的距离可能是,我不知道欧几里德距离的函数。也许dist工作:

dist(M, p)

因为M只是空间中的一个点,也是p。只有2个向量。 现在是最后一个。你想以西格玛的形式知道距离:

% create a distance vector and divide it by sigma
M - p ./ sigma

我认为这样做会有所帮助。