我从这里找到了使用欧几里德距离计算两个矩阵的距离的示例代码:Finding K-nearest neighbors and its implementation数据矩阵如下:
load fisheriris
X = meas(:,3:4);
newpoints = [5 1.45; 7 2; 4 2.5; 2 3.5];
我将如何应用切比雪夫和马氏距离并替换以下函数:
%// Use Euclidean
dists = sqrt(sum(bsxfun(@minus, x, newpoint).^2, 2));
我试图将代码更改为:
dists = max(abs(bsxfun(@minus, X, newpoint)))
答案如下。可能是因为我根据公式放置了 max 函数。
dists2 =
4.0000 1.3500
但是,如果我使用这个 knnsearch 代码,它会按预期工作。但是我需要应用 bsxfun 以便我的代码将使用上层代码进行标准化。我想比较算法中的不同距离:
[ncb,dcb] = knnsearch(X,newpoint,'k',10,'distance','chebychev')
感谢是否有人可以帮助我。