如何在Matlab中找到两个分布的交集

时间:2015-04-08 08:34:18

标签: matlab probability intersection probability-density

作为标题,我试图找到两个概率密度函数的交点,以最小决策误差找到最优决策点。

就我而言, 一个分布是Rayleigh分布,另一个分布是Rician 分布。

(你可以认为Rayleigh和Rician都是高斯分布,因为我试图陈述的问题也会出现在高斯的情况下。)

生成对应于每个pdf的两个向量。

Fs=1000;
x=linspace(0,20,Fs*20)
Ray=pdf('Rayleigh',x,1);
Ric=pdf('rician',x,3,1);

直观地,找到这两个pdf的交叉点。

我设定了一定的门槛,比如说

epsilon=0.001;

并遍历两个向量的所有向量元素。

如果两个矢量之间的元素差异小于该阈值,则记录索引。

如果交叉点发生在

附近
index=350, 

然后我可以预期这些指数的价值差异

347, 348, 349, 350, 351, 352, 353, 

将小于epsilon ,然后我选择中位数,即index = 350,来表示两个分布的交点。

现在的问题是,由于这些pdf的性质,这个值在开头和尾部都非常接近于零。

所以,无论我如何选择epsilon,记录的索引都会像

1,2,347, 348, 349, 350, 351, 352, 353, 6000,6001,6002,6003,6004,6005,6006.....

我该如何解决这个问题? ,还是有任何可靠的方法在Matlab中找到两个pdf的交集? (我认为这个功能应该非常基础。)

1 个答案:

答案 0 :(得分:0)

我会修改你的方法如下:

  • 使用pdf 比率,而不是差异。这样你就可以避免在交叉点之外检测到尾部。
  • 最小化,而不是指定阈值。
  • 向量化:一次计算所有点的比率(然后最小化)。

换句话说:

[~, index] = min(abs(Ray./Ric-1));

在你的例子中,这给出了

>> index
index =
    2107

作为 x 索引函数的pdf如下所示。找到的intesection指数被认为是正确的(图中略高于2000):

enter image description here