2016-09-25 54 views
0

我刚开始在Matlab中工作,在理解它是如何工作时遇到了一些麻烦。在Matlab中找到两个正态分布的交点

我正在尝试返回两个高斯分布的交集,其平均值为0和1,方差为0.5。我用下面的代码来生成两个分布:

mu1 = 0; 
mu2 = 1; 

sigma1 = sqrt(0.5); 
sigma2 = sqrt(0.5); 

dist1 = makedist('normal',mu1,sigma1); 
dist2 = makedist('normal',mu2,sigma2); 

我发现,您可以生成概率密度functionwith下面的代码文件中:

pdf(dist1,[range]) 

的问题是,我不我真的有一个范围,我只想找到这两个分布的交集。在Matlab中最好的方法是什么?

+1

http://stats.stackexchange.com/questions/12209/percentage-of-overlapping-regions-of-two-normal-distributions – StefanM

+0

[HTTPS ://fr.mathworks.com/matlabcentral/fileexchange/49823-calc-overlap-twonormal-s1-s2-mu1-mu2-xstart-xend-xinterval-](https://fr.mathworks.com/matlabcentral/fileexchange/49823-钙重叠twonormal-S1-S2-MU1-MU2-XSTART-xend的-xinterval-) – shamalaia

回答

1

我明白你想要交点,而不是两条曲线下的面积。如果这是正确的,它更容易使用匿名函数,

mu1 = 0; 
mu2 = 1; 
sigma1 = sqrt(0.5); 
sigma2 = sqrt(0.5); 
dist1 [email protected](x) exp(-(x-mu1).^2/(2*sigma1^2))/sqrt(2*sigma1^2*pi); 
dist2 [email protected](x) exp(-(x-mu2).^2/(2*sigma2^2))/sqrt(2*sigma2^2*pi); 
fzero(@(x) dist1(x) - dist2(x), rand * (mu1 - mu2) + (mu1 + mu2)) 

    0.500