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

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

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

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

b7e7fcbee9690ab693f8f15c18d91c13.png

L1距离计算公式如下:

6e46ae9a53c08f1973c73a070c29b14f.png

简单的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距离(就是欧氏距离)

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

2d6e80d6e93c09ede92bef9175886d0d.png

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值