Как реализовать эту функцию в MATLAB? - PullRequest
1 голос
/ 05 сентября 2010

Я использую книгу с функцией, которую хотел бы использовать.Однако я не думаю, что получаю правильные значения из своей функции.

Вот инструкция из книги:

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 Ответ

1 голос
/ 05 сентября 2010

Это экспоненциальное распределение .Вы можете использовать EXPPDF и EXPCDF из набора инструментов статистики:

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

, и оно должно быть эквивалентно тому, что у вас есть ...


Это то, что я получаю, когда объединяю это с графиком из вашего предыдущего вопроса :

alt text

Для подтверждения мы вычисляем площадь под каждымкривых (достаточно близко к 1):

>> trapz(zkt,hitProbabilty)
ans =
     1

>> trapz(zkt,shortProbability)
ans =
       1.0077
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...