2016-09-25 2 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