randomsample

PURPOSE ^

Samples elements of X so result uses at most maxmegs megabytes of memory.

SYNOPSIS ^

function [X,keeplocs] = randomsample( X, maxmegs )

DESCRIPTION ^

 Samples elements of X so result uses at most maxmegs megabytes of memory.
 
 X must be an n dimensional array with the last dimension used to index samples of X. So
 for example if X has size d1 x d2 x...x dn-1 x dn, it is treated as having dn elements
 of size (d1 x d2 x...x dn-1), and the resulting array Xsam will have dimension d1 x d2
 x...x dn-1 x dn' where dn' <= dn.

 Different types of arrays require different amounts of memory.  Each double requries 8
 bytes of memory, hence an array with 1.024 million elements of type double requires 8MB
 memory.  Each uint8 requires 1 byte, so the same size array would require 1MB.  Note
 that when saved to .mat files arrays may take up more or less memory.  

 Note, to see how much memory a variable x is using in memory, use:
   s=whos('x'); mb=s.bytes/2^20

 INPUTS
   X           - n-dim array of size (d1 x d2 x...x dn-1) x dn (treated as dn elements)
   maxmegs     - maximum number of megs Xsam is allowed to take up
 
 OUTPUTS
   Xsam        - n-dim array of size (d1 x d2 x...x dn-1) x dn' where dn'<=dn
   keeplocs    - vector of indicies kept from X;  Xsam=X(:,..,:,keeplocs)

 EXAMPLE
   % Xsam should have size: 1024xround(1024/10)
   X = uint8(ones(2^10,2^10));
   Xsam = randomsample( X, 1/10 );
   % Xsam should have size: 100x10x~(1000/8) 
   X = rand(100,10,1000);
   Xsam = randomsample( X, 1 );

 DATESTAMP
   29-Sep-2005  2:00pm

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:
Generated on Wed 03-May-2006 23:48:50 by m2html © 2003