How to check if a user entered input will form a valid function handle?
2 ビュー (過去 30 日間)
The user enters a character vector (in the edit text field of Appdesigner). I want to convert it into a function handle. I am doing this by concatenating it with '@(x,y)', making the function compatible with matrices and then using str2func. However, I want to be able to check if the input by the user is valid. Also, the function entered by the user must have its variables as x and/or y only.
For example, if the entered input is 'log(x)+sin(y)' the entry is valid whereas if the input is 'log(x)+*sin(y)' it should show an error.
Ameer Hamza 2020 年 10 月 8 日
You may try exception handling to check if a function handle is valid
x = 'x^2+2+SUM(x)'; % SUM is not a valid function in MATLAB
f = str2func(['@(x) ' x]);
is_correct = true;
f(0); % or some other value
is_correct = false;
error(ME.message); % throw an error, remove this line if you don't
% want an error appearing in command window.