1. I need a ‘perm,
part 2
function
[ x ] = xperm( x )
% XPERM Permute x.
% XPERM(X) returns a random
permutation of the elements of vector X.
% An error is reported if length( X )
< 2.
if length( x ) < 2
error('Too few elements!');
end
for k = 1 : length( x )
%swap element k with another randomly chosen element
pos = ceil( rand*length(x) );
tmp = x( k );
x( k ) = x( pos );
x( pos ) = tmp;
end
2. A super-duper all-purpose integer reader
function value =
readIntPrompt( prompt )
% READINTPROMPT Input function to read integer values.
% READINTPROMPT( S ) returns an error
if S is not a string.
% Repeatedly prompts user until
integer value is entered.
% Ensure that the prompt is a string:
if ~ischar( prompt )
error('Your prompt should be a string!');
end
value = input( prompt );
% Ensure that the input is legal:
while isempty( value) | ...
%
no empty values
~isreal(value) | ...
%
no complex numbers
isinf(value) | ...
%
no infinite values
isnan(value) | ...
%
no NaNs
~isnumeric(value) | ...
%
no non-numerical values
floor(value)~=ceil(value) | ... % no
decimal/fraction values
value < -realmax
| ...
% lower bound of integer
value > realmax
%
upper bound of integer
% Reprompt the user
disp('That value is not an integer!');
value = input( prompt );
end