我有一个包含10个向量'x'的数组,如下所示(用于模拟1D随机游走):
r=rand(10,1000);
r(r>.5)=1;
r(r<=.5)=-1;
x=cumsum(r);
一个矢量的图像如下:
如果我在序列中考虑2个值,比如+10和-10,那么我想在到达这些值时反映序列'x'。怎么做到这一点?
答案 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