I have generated a large dataset. Now I need to draw random samples from it. How can I do this?
    7 views (last 30 days)
  
       Show older comments
    
For simulation, I have to draw 1000 random samples from a large dataset. I am looking for some efficient way of doing this. Can anyone help, please?
0 Comments
Accepted Answer
  Harshit
      
 on 15 Nov 2012
         For dataset w
     p = randperm(length(w)); % Reshuffle their order randomly
     z = w(p(1:N)); % Choose the first N of these
2 Comments
  Jos (10584)
      
      
 on 15 Nov 2012
				
      Edited: Jos (10584)
      
      
 on 15 Nov 2012
  
			Note that the use of RANDPERM does not make it completely random because each original sample can only be drawn once ...
If you're after something like bootstrapping, use RANDI or RAND
  Peter Perkins
    
 on 15 Nov 2012
				In recent versions of MATLAB, you can do what Harshit suggests in one line. When w is very long, this can make a difference:
z = w(randperm(length(w),N)); % select N randomly without replacement
As Jos suggests, use randi for random sampling with replacement. If you have access to the Statistics Toolbox, also see the datasample function, which allows sampling with or without replacement, and weighted or unweighted.
More Answers (1)
  Grzegorz Knor
      
 on 15 Nov 2012
        For example:
data = exp(-(-10:0.1:10).^2);
idx = randperm(numel(data));
N = 20;
idx = idx(1:N);
plot(idx,data(idx),'o')
0 Comments
See Also
Categories
				Find more on Logical in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!