Given a vector, I would like to sample without replacement elements from it repeatedly.

1 vue (au cours des 30 derniers jours)
Given a (m x 1) vector v , I would like to ,randomly without replacement, sample s elements from it. I know I can use randsample(v,s) if I were to do this once. However, I want to do this repeatedly without using a for loop (i.e vectorization) so that it is fast.
  1 commentaire
Matt J
Matt J le 21 Août 2020
Modifié(e) : Matt J le 21 Août 2020
However, I want to do this repeatedly without using a for loop
If you make s>1, you will receive more than one selected sample. It will give you s samples in a single call.

Connectez-vous pour commenter.

Réponse acceptée

Matt J
Matt J le 21 Août 2020
m=10; n=15; s=3;
V=rand(m,n); %hypothetical data
[~,ids] = sort( rand(size(V)) ,1);
ids=ids(1:s,:)+m*(0:n-1);
selection=V(ids) %selects s elements from each column of V
  4 commentaires
Cem Gormezano
Cem Gormezano le 21 Août 2020
Not all heroes wear capes, thanks !!!
Matt J
Matt J le 21 Août 2020
You're quite welcome, but please Accept-click the answer if it resolved your issue.

Connectez-vous pour commenter.

Plus de réponses (1)

Bruno Luong
Bruno Luong le 21 Août 2020
Modifié(e) : Bruno Luong le 21 Août 2020
v = 'a':'z' % your vector
n = 10; % number of "loop"
s = 3; % number of drawing without replacement
[~,ir] = maxk(rand(n,length(v)),s,2);
r = v(ir)

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by