1

首先,我是 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 中取出值,但我想找到更直接的方法 - 你有什么建议吗?

4

1 回答 1

1

您对 in 中的每个元素所做的基本上u是在t. 尝试以下单线:

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

这是做什么的:

  1. 使用 生成矩阵repmat,其中每行等于t
  2. bsxfun使用小于对应元素的元素检查每一行u
  3. 累积每行中的所有 1,本质上为您提供最后一个较小元素的索引。

顺便说一句,没有必要将括号 ( []) 放入t = [0:s:T]。冒号运算符 ( :) 已经输出了一个向量。

于 2013-03-18T14:25:09.687 回答