【问题标题】:How to find intersection of two distribution in Matlab如何在Matlab中找到两个分布的交集
【发布时间】:2015-04-08 08:34:17
【问题描述】:

正如标题,我试图找到两个概率密度函数的交集,以找到具有最小决策误差的最佳决策点。

就我而言, 一种分布是瑞利分布,另一种是 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 的交集? (我认为这个功能应该是相当基础的。)

【问题讨论】:

    标签: matlab probability intersection probability-density


    【解决方案1】:

    我会修改你的方法如下:

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

    换句话说:

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

    在你的例子中,这给出了

    >> index
    index =
        2107
    

    作为 x 索引函数的 pdf 如下。发现的交叉指数被认为是正确的(从图中略高于 2000):

    【讨论】:

    • 感谢您的回答,交叉点处的比率必须存在最小值,但我还没有弄清楚它是局部最小值还是全局最小值(它只有在保证为全局最小值)。由于肉眼观察,尾部似乎还有另一个最小值。
    • 我已经绘制了 abs(Ray./Ric-1),似乎唯一的最小值是交叉点(当然它是全局最小值。)谢谢。
    • @AllenKuo 是的,肉眼在尾巴上会产生误导。虽然没有看到,但其中一条尾巴比另一条大很多倍。无论如何,你是对的,我的方法只有在只有一个局部最小值时才有效。如果有多个局部最小值,它将随机生成其中一个(可能不是全局最小值)。对于这种情况,您的阈值方法会更好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多