在 Matlab 中找到两个正态分布的交集
Find intersection of two normal distributions in Matlab
我刚开始使用 Matlab,但在理解它的工作原理时遇到了一些困难。
我正在尝试 return 两个均值为 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);
我发现在文档中,您可以使用以下代码生成概率密度函数:
pdf(dist1,[range])
问题是我真的没有范围,我只想找到这两个分布的交集。在 Matlab 中最好的方法是什么?
我了解到您想要的是交点,而不是两条曲线下方的面积。如果那是准确的,那么使用匿名函数就更容易了,
mu1 = 0;
mu2 = 1;
sigma1 = sqrt(0.5);
sigma2 = sqrt(0.5);
dist1 =@(x) exp(-(x-mu1).^2 / (2*sigma1^2)) / sqrt(2*sigma1^2*pi);
dist2 =@(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
我刚开始使用 Matlab,但在理解它的工作原理时遇到了一些困难。
我正在尝试 return 两个均值为 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);
我发现在文档中,您可以使用以下代码生成概率密度函数:
pdf(dist1,[range])
问题是我真的没有范围,我只想找到这两个分布的交集。在 Matlab 中最好的方法是什么?
我了解到您想要的是交点,而不是两条曲线下方的面积。如果那是准确的,那么使用匿名函数就更容易了,
mu1 = 0;
mu2 = 1;
sigma1 = sqrt(0.5);
sigma2 = sqrt(0.5);
dist1 =@(x) exp(-(x-mu1).^2 / (2*sigma1^2)) / sqrt(2*sigma1^2*pi);
dist2 =@(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