这段代码提供了在MATLAB中计算一维和二维空间内Wasserstein距离(也称为Earth Movers Distance)的便捷方法,特别适用于基于均匀分布的研究与应用。
以下是用于计算一维概率分布的1-和2-Wasserstein距离的紧凑MATLAB代码。Wasserstein距离的一般定义可以查阅相关文献。
此实现基于以下事实:对于给定的概率分布u和v,1-Wasserstein距离可表示为:
\[ W_1(u, v) = \int |F_u^{-1}(t) - F_v^{-1}(t)| dt \]
其中\(F_u\) 和 \(F_v\) 分别是累积密度函数(CDF),而\(F_u^{-1}\)和 \(F_v^{-1}\) 是对应的伪逆累积分布函数。2-Wasserstein距离可以表示为:
\[ W_2(u, v) = \left( \int |F_u^{-1}(t) - F_v^{-1}(t)|^2 dt \right)^{0.5} \]
代码假设u和v是离散且均匀的概率分布。在这种情况下,存在样本使得任何来自\( u \) 分布的随机变量满足:
\[ X_k = F_u(k),\quad k=1, 2,...n \]
这些样本作为函数输入,并被假定为按升序排序。累积分布函数及其伪逆由阶跃函数给出。
该代码已在MATLAB R2017a中测试通过,针对(在计算1-Wasserstein距离时)和进行了验证。另外的代码能够用于一般p-Wasserstein距离的计算,但相对于描述的情况而言更复杂。
参考文献可以查看 Carrillo 和 Toscani 的相关研究工作:“非线性扩散方程中的Wasserstein度量及其长时间行为”。