首先,我是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中取出值,但我想找到一个更直接的方法 - 你有什么建议吗?
答案 0 :(得分:1)
你基本上为u
中的每个元素做的是找到t
中最大元素的索引。尝试以下单行:
sum(bsxfun(@lt, repmat(t(:)', numel(u), 1), u(:)), 2)
这是做什么的:
repmat
生成矩阵,其中每行等于t
。bsxfun
检查每一行,以查找小于u
中相应元素的元素。顺便说一句,没有必要在[]
中放置括号(t = [0:s:T]
)。冒号运算符(:
)已经输出了一个向量。