1

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

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

一个向量的图像将如下所示:

在此处输入图像描述

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

4

1 回答 1

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
于 2014-08-18T08:17:26.973 回答