【发布时间】:2016-03-14 16:29:14
【问题描述】:
我找到了以下 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 而不是 sum?
4) 给定的强度函数是\lambda (t) = 100 - 10*(t-7) with 7 \leq t \leq 12t = 7 + nonhomopp('100-10*',5)如何表示这个?
对不起,如果这么多,谢谢!
【问题讨论】:
-
那是一段非常奇怪的代码。您是否有任何输入可以使函数在没有错误消息的情况下运行?
-
是的@Daniel,当我运行它时出现错误,但随后运行
t = 7 + nonhomopp('100-10*',5)会生成一个直方图