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

回答

1

你基本上做的每个元素在u什么是寻找在t最大的元素的索引。试试下面的一行代码:

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

这样做是:

  1. 生成使用repmat一个矩阵,其中每行等于t
  2. 检查小于u相应元件的元件使用bsxfun每一行。
  3. 累积每个行中的所有1S,根本上给你的最后一个小元素的索引。

顺便说一句,没有必要把括号([])放在t = [0:s:T]。冒号操作符(:)已经输出一个向量。

+1

完美,这是我一直在寻找!我希望能够学习很多新的matlab函数:)我要写文档:D – Henrik 2013-03-18 14:35:41