我發現下面的Matlab代碼來模擬一個非齊次泊松過程瞭解非齊次泊松過程的Matlab代碼
function x = nonhomopp(intens,T)
% example of generating a
% nonhomogeneousl poisson process on [0,T] with intensity function intens
x = 0:.1:T;
m = eval([intens 'x']);
m2 = max(m); % generate homogeneouos poisson process
u = rand(1,ceil(1.5*T*m2));
y = cumsum(-(1/m2)*log(u)); %points of homogeneous pp
y = y(y<T); n=length(y); % select those points less than T
m = eval([intens 'y']); % evaluates intensity function
y = y(rand(1,n)<m/m2); % filter out some points
hist(y,10)
% then run
% t = 7 + nonhomopp('100-10*',5)
我是新來的Matlab和無法理解這是如何工作的。我已閱讀所有這些功能的Mathworks公司的網頁,並在四個地方很困惑:
1)爲什麼函數定義爲X然後間隔也被稱爲X?像這是濫用符號嗎?
2)如何在方括號影響EVAL,
eval([intens 'x'])
,爲什麼X的單引號?
3)爲什麼他們使用cumsum而不是總和?
4)給定的強度函數是\lambda (t) = 100 - 10*(t-7) with 7 \leq t \leq 12
t = 7 + nonhomopp('100-10*',5)
如何表示?
對不起,如果這是這麼多,謝謝!
這是一段非常奇怪的代碼。你有沒有任何輸入,使功能運行沒有錯誤信息? – Daniel
是@Daniel,當我運行它時,我得到一個錯誤,但後來運行't = 7 + nonhomopp('100-10 *',5)'產生一個直方圖 – Sunhwa