Discrete Frechet Distance代码

function dF = DiscreteFrechetDistance(P,Q)

%%
%initialize
Size_P = size(P);
Size_Q = size(Q);
ca = ones(Size_P(1),Size_Q(1)) .* -1;
if Size_P(2) ~= Size_Q(2)
    error('The input P and Q must be of the same dimension');
elseif Size_P(1) == 0 && Size_Q(1) == 0
    dF = 0;
    return;
end
dF = c(Size_P(1),Size_Q(1));

%%
%function c
function c_ij = c(i,j)
    d = @(u,v) sqrt(sum((u - v).^2));
    if ca(i,j) > -1
        c_ij = ca(i,j);
    elseif i==1 && j==1
        ca(i,j) = d(P(1,:),Q(1,:));
        c_ij = ca(i,j);
    elseif i > 1 && j == 1
        ca(i,j) = max(c(i - 1,1),d(P(i,:),Q(1,:)));
        c_ij = ca(i,j);
    elseif i == 1 && j > 1
        ca(i,j) = max(c(1,j - 1),d(P(1,:),Q(j,:)));
        c_ij = ca(i,j);
    elseif i > 1 && j > 1
        ca(i,j) = max(min([c(i - 1,j),c(i - 1,j - 1),c(i,j - 1)]),d(P(i,:),Q(j,:)));
        c_ij = ca(i,j);
    else
        ca(i,j) = inf;
    end
end
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值