最原始的Hausdorff距离算法
HD(P,Q)=max(h(P,Q),h(Q,P))
(非专业敲代码,简单易懂能用)
function [ HD ] = hd( P,Q )
%Hausdorff distance
Size_P = size(P); %获得输入数据行数列数
Size_Q = size(Q);
if Size_P(2) ~= Size_Q(2) %比较PQ数据维度是否一致
error('The input P and Q must be of the same dimension');
elseif Size_P(1) == 0 && Size_Q(1) == 0
HD = 0;
return;
end
d = @(u,v) sqrt(sum((u - v).^2)); %定义欧氏距离函数
%h(P,Q)
d1 = zeros(Size_P(1),1); %生成全0列向量
for i=1:Size_P(1)
d12 = zeros(Size_Q(1),1);
for j=1:Size_Q(1)
d12(j) = d(P(i,:),Q(j,:));
end
d1(i) = min(d12);
end
hab = max(d1);
%h(Q,P)
d2 = zeros(Size_Q(1),1);
for i=1:Size_Q(1)
d21 = zeros(Size_P(1),1);
for j=1:Size_P(1)
d21(j) = d(P(j,:),Q(i,:));
end
d2(i) = min(d21);
end
hba = max(d2);
HD = max(hab,hba);
end