L1距離とL2距離Matlabコードの実装
L1 Distance L2 Distance Matlab Code Implementation
1. L1距離(つまり、マンハッタン距離 マンハッタン距離 )。
これは比較的簡単です。要するに、それは点の絶対値を見つけることです
たとえば、次の図に示すように、対応する位置要素が減算されてから、絶対値演算が実行されます。
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 distance m = size(X,1) n = size(Y,1) KMatrix = zeros(m,n) Cell = arrayfun(@(i) getL1Vec(X(i,:), Y, i), 1:m,'UniformOutput', false)% can only get Cells for i = 1: m %Cells->matrix, very fast KMatrix(i,:) = Cell{i} end --------------------------------------------------- function KVec = getL1Vec(XVec, Y, i)% L1 in line i KVec = sum( abs(bsxfun(@minus,XVec,Y)),2 ) fprintf('%d.', i)if mod(i,10)==0, fprintf('
') end end
2. L 2距離(つまり、ユークリッド距離)
これは、減算された2点の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コードの実装
% Euclidean distance from% Euclidean distance function dist = distance_func(a, b) % norm 2 distance dist1 = sum((a-b).^2) dist = sqrt(dist1) end