Using the command "eval"
11 views (last 30 days)
Show older comments
I want to use the command eval, but I want my program to display an error message like: "Please try again" if the eval command doesn't work.
For example, if the user inputs:
eval('2^3')
then it's all good and the answer should be 8.
But if the user inputs:
eval('dg@^4')
then MATLAB displays: "Please try again"
2 Comments
Image Analyst
on 10 Dec 2020
What do you want it to say instead, when the user enters some illegal input?
See Adam's Answer below for some more graceful ways to authenticate user input.
Answers (1)
Adam Danz
on 10 Dec 2020
Edited: Adam Danz
on 10 Dec 2020
Don't use eval() at all.
- Matlab documentation: Alternative eval()
- Matlab Fandom: Why is it advised to avoid using the "eval" function?
- Lots of experienced Matlab users strongly recommend to avoid eval()
If the user should enter an expression and you want to test that the expression is functional,
responseOK = false;
while ~responseOK
try
response = input('Enter an expression (example: 2^3): '); % without quotes
if isnumeric(response)
responseOK = true;
else
fprintf('The result must be numeric.\n')
end
catch ME
fprintf('Please try again\n')
% you could use the MException (ME) to provide
% additional feedback on the error
end
end
disp(response)
If a string (or character vector) is supplied that should be evaluated as an expression, see Karan Gill's suggestion to use str2sym or you can convert it to an anonymous function but this introduces some of the risks associated with eval().
responseOK = false;
while ~responseOK
try
response = input('Enter an expression (example: "2^3"): '); % without quotes
if ischar(response) || isstring(response)
anonFcn = str2func(['@()',char(response)]);
z = anonFcn();
responseOK = true;
else
fprintf('Please enter a string or character array.\n')
end
catch ME
fprintf('Please try again\n')
% you could use the MException (ME) to provide
% additional feedback on the error
end
end
disp(z)
0 Comments
See Also
Categories
Find more on Scope Variables and Generate Names in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!