在matlab中反映随机游走?

时间:2014-08-18 05:52:44

标签: matlab random-walk

我有一个包含10个向量'x'的数组,如下所示(用于模拟1D随机游走):

r=rand(10,1000);
r(r>.5)=1;
r(r<=.5)=-1;
x=cumsum(r);

一个矢量的图像如下:

enter image description here

如果我在序列中考虑2个值,比如+10和-10,那么我想在到达这些值时反映序列'x'。怎么做到这一点?

1 个答案:

答案 0 :(得分:2)

在回答您的问题之前,应该指出您的代码已损坏。默认情况下,cumsum会在第一维上累积数据,要更改此行为,您应指定dim参数:

x = cumsum(r,2);

并且,回答您的问题,您可以简单地将所有数据转换为threshold以上的数据:

threshold = 10;

nsteps = ceil( max(abs(x(:))) / (2*threshold) - 0.5 );
for ii = 1:nsteps
    ind = abs(x) > 10;
    x(ind) = 20 * sign(x(ind)) - x(ind);
end