我试图申请mahal
计算27 个变量的 2 个行向量之间的马氏距离,即 和是两个向量。但是,它出现了一个错误:mahal(X, Y)
X
Y
The number of rows of X must exceed the number of columns.
经过几分钟的研究,我发现我不能像这样使用它,但我仍然不确定为什么。有人可以给我解释一下吗?
我也有下面的mahal
方法示例:
>> mahal([1.55 5 32],[5.76 43 34; 6.7 32 5; 3 3 5; 34 12 6;])
ans =
11.1706
有人可以澄清一下 MATLAB 在这种情况下是如何计算答案的吗?
编辑:
我找到了计算马氏距离的代码:
S = cov(X);
mu = mean(X);
d = (Y-mu)*inv(S)*(Y-mu)'
d = ((Y-mu)/S)*(Y-mu)'; % <-- Mathworks prefers this way
我在 上对其进行了测试[1.55 5 32]
,[5.76 43 34; 6.7 32 5; 3 3 5; 34 12 6;]
它给了我与使用mahal
函数 (11.1706) 相同的结果,并且我尝试计算 27 个变量的 2 个向量之间的距离并且它有效。你怎么看待这件事?mahal
由于该功能无法满足我的需求,我可以指望这个解决方案吗?