这个相对简单点,简要的说就是求点的绝对值
例如下图所示:就是对应位置元素相减然后取绝对值操作!
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
就是两个两个点相减的平方和再开根号
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