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

5 ビュー (過去 30 日間)
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 件のコメント
Matt J
Matt J 2020 年 8 月 21 日
編集済み: Matt J 2020 年 8 月 21 日
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.

サインインしてコメントする。

採用された回答

Matt J
Matt J 2020 年 8 月 21 日
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 件のコメント
Cem Gormezano
Cem Gormezano 2020 年 8 月 21 日
Not all heroes wear capes, thanks !!!
Matt J
Matt J 2020 年 8 月 21 日
You're quite welcome, but please Accept-click the answer if it resolved your issue.

サインインしてコメントする。

その他の回答 (1 件)

Bruno Luong
Bruno Luong 2020 年 8 月 21 日
編集済み: Bruno Luong 2020 年 8 月 21 日
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)

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by