取出维纳过程的随机时间

时间:2013-03-18 13:45:09

标签: matlab stochastic-process

首先,我是matlab和这个论坛的新手,请原谅我的无知。

我以下列方式生成一个标准的维纳过程(我自己做了,所以如果它是愚蠢或错误我想知道)。

s =0.0001; % stepsize
t = [0:s:T]; % divide interval into steps

G=sqrt(s)*randn(length(t),1); 

Y=cumsum(G);

现在我想在一些随机的时间找到它的值,比如说:

u=rand(4,1)

我想(用谷歌和耐心)去做像

这样的事情
for i = 1:length(u)
   row(i) = find(t < u(i),1,'last');
end

然后简单地从Y中取出值,但我想找到一个更直接的方法 - 你有什么建议吗?

1 个答案:

答案 0 :(得分:1)

你基本上为u中的每个元素做的是找到t中最大元素的索引。尝试以下单行:

sum(bsxfun(@lt, repmat(t(:)', numel(u), 1), u(:)), 2)

这是做什么的:

  1. 使用repmat生成矩阵,其中每行等于t
  2. 使用bsxfun检查每一行,以查找小于u中相应元素的元素。
  3. 累积每行中的所有1,基本上为您提供最后较小元素的索引。
  4. 顺便说一句,没有必要在[]中放置括号(t = [0:s:T])。冒号运算符(:)已经输出了一个向量。