向量相似度度量(二):EMD (Earth Mover's Distance)的MATLAB对照实现

本文通过MATLAB的linprog函数详细解释了如何计算地球 mover's 距离(EMD),包括函数参数解析、实例演示及代码实现,帮助读者深入理解EMD的线性规划问题。
摘要由CSDN通过智能技术生成


之所以要写这篇文章,主要是想从Matlab函数的角度给大家一个对EMD直观的理解。EMD是在一定的条件限制下求解最小代价作为直方图等向量的距离。EMD具体内容请参考我第一篇文章。而求解最小代价的过程就是个线性规划问题。


一、Matlab函数解释

这里借用的Matlab函数为linprog(),即求解线性规划的函数。下面为了让大家理解方便,signature的表达严格对应了直方图的bin,也就是说一点都不压缩直方图,每个bin就作为一个signature,所以数据量显得大了些。例如直方图有32个bin,那么signature就是 (1, w1), (2, w2), (3, w3).... (32, w32),w值为每个bin的数量。

matlab的这个函数我的调用方式为:linprog(f, A, b, Aeq, beq),解释如下:

1)函数的目的是求 fT * x的最小值,一定要注意,这里的f相当于上一篇中EMD的距离矩阵D,x相当于EMD的fij,即从一个直方图的第i个bin流到另一个直方图的第j个bin的数量。 由于这个函数的输入f是一维的,下面我把EMD的距离dij和fij都展开。

2)一个限制条件为  A * x <= b

3)另一个限制条件是Aeq * x = beq

 

二、实例

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值