Find intersection of two guassian curves

1 次查看(过去 30 天)
Hi all these are my two curves:
y1 = p(1)*pdf(n1,xgrid); hold on; plot (xgrid, y1,'b'); % hold off
y2 = p(2)*pdf(n2,xgrid); hold on; plot (xgrid, y2,'r'); % hold off
I need to find the exact x coordinates where this two lines meet.
I tried using:
index_intersection = find(y1 == y2);
but it gives me index_intersection =
1×0 empty double row vector
I also tried:
idx = find (y1 - y2 < eps, 1);
but still didn't get the right coordinates.
Please, is there another alternative? I read online that I could use fzero, but I haven't understood how to use the syntax. Thanks in advance.
  3 个评论
Trisha Kibaya
Trisha Kibaya 2018-9-11
numComponents=2;
paramEsts = fitgmdist(data(:),numComponents);
p = paramEsts.ComponentProportion;
and p has two values.
p =
0.3915 0.6085

请先登录,再进行评论。

采纳的回答

jonas
jonas 2018-9-11
编辑:jonas 2018-9-11
If you have only one intersection, then you can just find the minimum difference
[~,idx] = min(abs(y1 - y2))
This will however always output a value even when there is no intersection. Also, the accuracy depends on the resolution of your x-vector, where higher resolution yields better accuracy (this is true for most methods). I always recommend InterX from FEX for finding intersections. It interpolates your data per default for high accuracy.
  2 个评论
Trisha Kibaya
Trisha Kibaya 2018-9-12
Please, pardon my ignorance but is FEX another MathWorks product? Cause i don't have that
jonas
jonas 2018-9-12
编辑:jonas 2018-9-12
Sorry, FEX is short for fileexchange where you can find open source user-submitted functions. Follows the link in my answer, download and put it in your matlab search path

请先登录,再进行评论。

更多回答(1 个)

KSSV
KSSV 2018-9-11
编辑:KSSV 2018-9-11
tol = 10^-3 ; % Change this if required
idx = abs(y1-y2)<=tol ;
  3 个评论
KSSV
KSSV 2018-9-11
To compare two flottant numbers it is suggested to subtract check for inequality with tolerance, rather then using ==.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Probability Distributions 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by