假如我有[1 2 3 4 5 6 7 8 9 10]的向量,我想选择向量的每三个元素的随机数,因此得到的向量可以是[1 4 9 10]或[2 4 8 10]等
会是什么……
这是一种利用线性索引的矢量化方法 -
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