I think something is wrong with tricdf function (maybe triinv also).
>> tricdf (0.7, 0.5, 1.0, 0.9)
ans = 0.16000
The correct answer should be 0.2.
MATLAB gives 0.2. This value can be also verified by the geometry of the
pdf triangle with base from 0.5 to 1, and height 4 at 0.9. Then, the
area of the triangle with base from 0.5 to 0.7 and height 2 (0.7 is in
the middle of the 0.5 to 0.9 segment) is 0.2.
tricdf code has few problems. For you reported problem this fix should work:
< area = (x(k_temp) - a).^2 * h;
> area = (x(k_temp) - a).^2 * h / (c - a) / 2 ;
< area = (b-x(k_temp)).^2 * h;
> area = (b-x(k_temp)).^2 * h / (b - c) / 2 ;
A similar change should be done for the code segment that deals with the case of
A,B, and C being arrays rather than scalar. I really do not understand the intent of that code.
It requires the size of X, A, B, and C to be the same. That does not make much sense to me.
I think A, B and C should be scalars. I do not think there is a compatible matlab's function.