MATLAB: Verifying user input

data verificationinput command

Hi there,
How can you verify numerical input from a user. I have this little program here, and it works fine until the user enters a non numerical input. How do you get matlab to check if it is a number or character?
Thanks in advance

Best Answer

If you're using a Command Window interface, then you could employ this function, which I wrote a while back. I use it to ensure the user gives a numerical input. It also insists on a scalar value. You can easily modify it to ensure that the number is real, and/or an integer, as well, by modifying the subfunction checknum.
function i = getnum(prompt, default)
% GETNUM Read a numerical value from the keyboard
%

% I = GETNUM(PROMPT) prints the string PROMPT and waits for the user
% to type a number followed by return. Checks that the input does
% actually represent a scalar and prompts again if necessary.
% Returns the number.
%
% I = GETNUM(PROMPT, DEFAULT) does the same except that the number
% DEFAULT is printed after the prompt, and is returned if the user
% just presses return. Setting DEFAULT to [] is the same as omitting
% it.
% David Young, March 2002
if nargin < 2
default = [];
end
if isempty(default)
str = prompt;
else
if ~checknum(default)
error('Expecting numerical default argument');
end;
str = [prompt, ' [', num2str(default), '] '];
end;
i = [];
while isempty(i)
i = input(str, 's');
if isempty(i) && ~isempty(default)
i = default;
else
i = str2num(i); %#ok<ST2NM>
if ~checknum(i)
disp('A single number expected');
i = [];
end
end
end
end
function i = checknum(x)
% Checks whether its argument is a single number
i = isnumeric(x) && isscalar(x);
end
Related Question