如何在Matlab中找到两个分布的交集
How to find intersection of two distribution in Matlab
正如标题,我试图找到两个概率密度函数的交集,以找到决策误差最小的最优决策点。
就我而言,
一种分布是瑞利分布,另一种是莱斯分布
分布.
(你可以把Rayleigh和Rician看成是Gaussian分布,因为我说的问题在Gaussian情况下也会出现。)
生成每个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 的交集? (我认为这个功能应该是非常基础的。)
我会修改你的方法如下:
- 使用pdf比率,没有区别。这样你就可以避免检测除交叉点之外的尾巴。
- 最小化,而不是应用阈值。
- 矢量化:一次计算所有点的比率(然后最小化)。
换句话说:
[~, index] = min(abs(Ray./Ric-1));
在您的示例中,这给出了
>> index
index =
2107
作为 x 索引函数的 pdf 如下。发现相交指数是正确的(从图中略高于2000):
正如标题,我试图找到两个概率密度函数的交集,以找到决策误差最小的最优决策点。
就我而言, 一种分布是瑞利分布,另一种是莱斯分布 分布.
(你可以把Rayleigh和Rician看成是Gaussian分布,因为我说的问题在Gaussian情况下也会出现。)
生成每个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 的交集? (我认为这个功能应该是非常基础的。)
我会修改你的方法如下:
- 使用pdf比率,没有区别。这样你就可以避免检测除交叉点之外的尾巴。
- 最小化,而不是应用阈值。
- 矢量化:一次计算所有点的比率(然后最小化)。
换句话说:
[~, index] = min(abs(Ray./Ric-1));
在您的示例中,这给出了
>> index
index =
2107
作为 x 索引函数的 pdf 如下。发现相交指数是正确的(从图中略高于2000):