没有for循环的随机块

时间:2014-09-05 18:03:50

标签: matlab

在下面的代码中,我想生成7个随机起点。然后,我想要获取这些起始点并选择矩阵Delta中与第一个随机选择的起点相对应的列号。然后我还在该列之后包括接下来的47列。然后我应该使用下一个随机起点,从Delta中选择相应的列并再次包含以下47列。依此类推,直到所有随机起点都被使用。

问题在于,当我使用下面的代码时,它仅适用于第一个随机起点并忽略其余的起始点?

这可以在不必循环的情况下完成吗?

LogData=log(data);

Delta=diff(LogData,1,2);

max_t=size(Delta,2);

Start_YC=LogData(:,max_t);

Urnd=randi(max_t,7,1);

SRtns=Delta(:,Urnd:Urnd+47);

1 个答案:

答案 0 :(得分:1)

看看这是否适合你 -

rand_start_pts = randperm(max_t-47,7)
ind = bsxfun(@plus,rand_start_pts(:),0:47)'
SRtns = Delta(:,ind(:))