在向量中的每N个元素中选择一个随机的

时间:2017-10-18 03:29:42

标签: matlab vector operation

如果我有[1 2 3 4 5 6 7 8 9 10]的向量,我想选择向量的每三个元素的随机数,因此得到的向量可以是[1 4 9 10]或[2 4 8 10]等。

最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

这是一种利用线性索引的矢量化方法 -

function out = pick_one_everyN(a, N)
n = ceil(numel(a)/N);
c = randi(N,1,n);
c(end) = randi(mod(numel(a)-1,N)+1,1);
out = a((0:n-1)*N + c);

样品运行 -

>> a = [1 2 3 4 5 6 7 8 9 10];
>> pick_one_everyN(a, 3)
ans =
     3     6     7    10
>> pick_one_everyN(a, 4)
ans =
     4     5     9
>> pick_one_everyN(a, 5)
ans =
     3     7