2017-10-18 3 views

Répondre

2

Voici une approche vectorisé utilisant l'indexation linéaire -

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); 

runs exemples -

>> 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