Matlab中FrechetDistance方法实现---比较两条曲线的相似性,并绘制曲线

本文介绍了如何在Matlab中利用FréchetDistance方法来计算并比较两条曲线的相似性。通过命令行输入相关语句,得到的返回值表示曲线的相似度,数值越小表示相似度越高。
摘要由CSDN通过智能技术生成
  1. function [cm, cSq] = DiscreteFrechetDist(P,Q,dfcn)
    
    plot(P)%绘制曲线P
    plot(Q)%绘制曲线Q
    
    sP = size(P);
    sQ = size(Q);
    
    % check validity of inputs
    if sP(2)~=sQ(2)
        error('Curves P and Q must be of the same dimension')
    elseif sP(1)==0
        cm = 0;
        return;
    end
    
    % initialize CA to a matrix of -1s
    CA = ones(sP(1),sQ(1)).*-1;
    
    % distance function
    if nargin==2
        dfcn = @(u,v) sqrt(sum( (u-v).^2 )); %  @表示定义匿名函数
    end
    
    % final coupling measure value
    cm = c(sP(1),sQ(1));
    
    % obtain coupling measure via backtracking procedure
    if nargout==2
        cSq = zeros(sQ(1)+sP(1)+1,2);    % coupling sequence
        CApad = [ones(1,sQ(1)+1)*inf; [ones(sP(1),1)*inf CA]];  % pad CA
        Pi=sP(1)+1; Qi=sQ(1)+1; count=1;  % counting variables
        while Pi~=2 || Qi~=2
            % step down CA gradient
            [v,ix] = min([CApad(Pi-1,Qi) CApad(Pi-1,Qi-1) CApad(Pi,Qi-1)])
评论 44
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值