L1距离和L2距离Matlab代码实现

1、L1距离(也就是曼哈顿距离Manhattan Distance

这个相对简单点,简要的说就是求点的绝对值

例如下图所示:就是对应位置元素相减然后取绝对值操作!

 L1距离计算公式如下:

 

简单的python代码实现

 

import numpy as np
for i in range(num_test):
	a = X_test[i]-X_train[j]
	b = np.fabs(a)
	dists[i][j] = np.sum(b)

matlab代码实现:

function KMatrix = getL1( X, Y ) %L1距离

m = size(X,1);  n = size(Y,1);

KMatrix = zeros(m,n);

Cell = arrayfun(@(i) getL1Vec(X(i,:), Y, i), 1:m, 'UniformOutput', false);%只能得到Cells

for i = 1: m %Cells->矩阵,极快

   KMatrix(i,:) = Cell{i};

end
---------------------------------------------------
function KVec = getL1Vec(XVec, Y, i)%第i行L1

   KVec = sum( abs(bsxfun(@minus,XVec,Y)),2 );

   fprintf('%d.', i);if mod(i,10)==0, fprintf('\n'); end

end

2、L 2距离(就是欧氏距离)

就是两个两个点相减的平方和再开根号

python 代码实现,便于理解

import numpy as np
for i in range(num_test):
      for j in range(num_train):
        a = X_test[i]-X_train[j]
        b = np.square(a)
        c = np.sum(b)
        dists[i][j] = np.sqrt(c)

matlab代码实现

%欧几里得距%欧式距离
function dist = distance_func(a, b)
% norm 2 distance
dist1 = sum((a-b).^2);
dist = sqrt(dist1);
end

 

 

 

 

 

 

 

 

 

 

 

发布了100 篇原创文章 · 获赞 50 · 访问量 5万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览