如何在MATLAB中实现这个功能?

时间:2010-09-05 13:37:29

标签: math matlab

我正在使用一本带有我想要使用的功能的书。但是我不认为我从我的函数中获得了正确的值。

以下是本书的说明:

alt text

这是我在MATLAB中创建的函数:

function [ shortProbability ] = pShort( zkt, zktStar, short)

if zkt > zktStar
    shortProbability = 0;
else
    normalizer = 1/(1-exp(-short*zktStar));
    shortProbability = normalizer * (short * exp(-short*zkt));
end

end

我插入的值是:

zkt = 0:1:100
zktStar = 50;
short = 0.01;

然而,我的图表并不像我应该最终得到的那样,这就是:

alt text

我从图表中得到了这个,看起来是正确的,但我不认为它正常化:

alt text

有人可以帮我纠正这个功能吗?

1 个答案:

答案 0 :(得分:1)

这是exponential distribution。您可以使用统计工具箱中的EXPPDFEXPCDF

normalizer = 1 ./ ( expcdf(zktStar,1/short) - expcdf(0,1/short) );
shortProbability = exppdf(zkt, 1/short) * normalizer;

它应该等同于你所拥有的......


这是我将previous question

中的图表与之结合使用时得到的结果

alt text

要确认,我们计算每条曲线下的面积(足够接近1):

>> trapz(zkt,hitProbabilty)
ans =
     1

>> trapz(zkt,shortProbability)
ans =
       1.0077