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