计算欧几里得距离

时间:2019-07-20 14:36:04

标签: matlab

我有200张人脸图像(32x32),在这里我将其重塑为矩阵数据

  

人脸= 200 x 1024(200是人脸样本,1024是一张人脸图像   向量化为1行)

     

Facemean = 1 x 1024(图像的均值)

欧式距离方程1的使用为:

 distance = sqrt ( (Face(1,1)-Facemean(1,1)^2 + (Face(1,2)-Facemean(1,2)^2  + . . . + (Face(200,1024)-Facemean(1,1024)^2 );

因为使用上面的等式将很长,所以我想问一下是否还有其他计算方法?

我期望的结果是1 x 1矩阵值

1 个答案:

答案 0 :(得分:0)

更优雅的答案(来自下面的评论):

FacemeanMatrix = repmat( Facemean, [200, 1])
distance = sqrt( sum( ( Face(:)-FacemeanMatrix(:) ).^2 )) 

上一个答案

您可以将其写为矢量:

dissqr = 0
% for each colum, calculate the square difference and sum all the lines
for i =1:200
  dissqr = dissqr + sum( (Face(i,:)-(Facemean(:,i).'))^2 )
end

distance = sqrt( dissqr )