Given a vector, I would like to sample without replacement elements from it repeatedly.
1 view (last 30 days)
Show older comments
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 Comment
Accepted Answer
Matt J
on 21 Aug 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 Comments
Matt J
on 21 Aug 2020
You're quite welcome, but please Accept-click the answer if it resolved your issue.
More Answers (1)
Bruno Luong
on 21 Aug 2020
Edited: Bruno Luong
on 21 Aug 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)
0 Comments
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!