作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图从原点找到一些点的马哈拉诺比斯距离。 MATLAB 命令是 mahal(Y,X)
但是如果我使用它,我会得到 NaN 作为矩阵 X =0 因为需要从原点找到距离。有人可以帮我解决这个问题。应该怎么做
最佳答案
我想你对什么有点困惑 mahal()
正在做。首先,计算马哈拉诺比斯距离需要一组点,从这些点可以计算协方差。
在 Matlab docs for this function它清楚地表明正在计算的距离是:
d(I) = (Y(I,:)-mu)*inv(SIGMA)*(Y(I,:)-mu)'
mu
是
X
的总体平均值和
SIGMA
是
X
的总体协方差矩阵.由于您的总体由一个点(原点)组成,因此它没有协方差,因此
SIGMA
矩阵不可逆,因此在距离中获得 NaN/Inf 值的错误。
S
中.你想要距离 w.r.t.原点,因此您无需从
Y
中的值中减去任何内容,您需要计算的是:
for ii = 1:size(Y,1)
d(ii) = Y(ii,:)*inv(S)*Y(ii,:)'; % Where Y(ii,:) is assumed to be a row vector.'
end
关于matlab - Matlab 中的马氏距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10181570/
我是一名优秀的程序员,十分优秀!