0
点赞
收藏
分享

微信扫一扫

计算Hausdorff distance MATLAB代码

DYBOY 2022-03-25 阅读 49

最原始的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
举报

相关推荐

0 条评论