% RANDELEMENT(VECTOR,J) returns J random samples chosen in the VECTOR array.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DESCRIPTION: RANDELEMENT(VECTOR,N) returns N random samples chosen in the% VECTOR array. If VECTOR is a scalar,% than it answers with N samples from% 1:1:VECTOR.%% CALL: out = randelement(arr, j)%% INPUTS: arr - numerical vector array or cell vector array; can be% single line or single column.% j - number of samples to extract%% OUTPUTS: out - numerical vector array or cell vector array, shaped as% the input 'arr', containing j elements chosen among % those included in 'arr'.%% VERSION: $Id: randelement.m,v 1.5 2009/08/10 00:49:50 nicola Exp $%% HISTORY: 06-02-2008 N Tateo% Creation%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function out = randelement(arr, j) if nargin < 2 error('randelement:tooFewInputs','The randelement function requires two input arguments.'); elseif ~isa(arr,'double') && ~isa(arr,'cell') error('randelement:wrongInput','The input to the randelement function must be a numerical or cell array.') elseif ~isvector(arr) error('randelement:wrongShape','The input to the randelement function must be a vector.') end N = length(arr); if N==1 if iscell(arr), arr = num2cell([1:1:arr{1}]); else arr = [1:1:arr]; end N = length(arr); end out = arr(randi(N,1,j)); if size(arr,1)==1 % reshape as a row vector out = reshape(out,1,[]); else % reshape as a column vector out = reshape(out,[],1); endend% END