How can I add two CDFs together if their respective double arrays are of different sizes?
Take for example:
[Fp,Xp] = ecdf(distribution1); % blue CDF shown below
[Fv,Xv] = ecdf(distribution2); % orange CDF shown below
size(Fp,1)
ans = 492
size(Xp,1)
ans = 492
size(Fv,1)
ans = 899
size(Pv,1)
ans = 899
If Fp is the probability of event p happening at time Xp, and Fv is the probability of event v happening at time Xv, how could I calculate Fpv and Xpv if the double arrays are of unequal sizes? I hope this makes sense, sorry if it's a confusing explanation of what I'm trying to do.
The formula I want to use is:
Fpv(x) = Fp(x) + Fv(x) - Fp(x)*Fv(x)
Which assumes that Fp(x)*Fv(x) < Fp(x) + Fv(x)

댓글 수: 2

Mirlan Karimov
Mirlan Karimov 2019년 4월 6일
편집: Mirlan Karimov 2019년 4월 6일
Why not interpolating Fv in 899 points. interp(Fv, 2)
or other way around: interpolating Fp in 492 points
I don't think you have any option that doesn't involve resampling one of your arrays. I haven't read the doc for interp, but there should be an option to use a spline.

댓글을 달려면 로그인하십시오.

 채택된 답변

Darren Kenney
Darren Kenney 2019년 4월 6일
편집: Darren Kenney 2019년 4월 6일
Solution:
times = 0:0.1:2000;
[Fp,Xp] = ecdf(distribution1);
[uniqueXp, uniqueXpIndex] = unique(Xp);
interpolatedP = interp1(uniqueXp, Fp(uniqueXpIndex), times, 'previous');
[Fv,Xv] = ecdf(distribution2);
[uniqueXv, uniqueXvIndex] = unique(Xv);
interpolatedV = interp1(uniqueXv, Fv(uniqueXvIndex), times, 'previous');

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

질문:

2019년 4월 6일

편집:

2019년 4월 6일

Community Treasure Hunt

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

Start Hunting!

Translated by