MATLAB MATLAB Input Function Help | Elbarto

AI Thread Summary
The discussion centers on a MATLAB coding issue where the user seeks to terminate the program if a non-numeric input is provided, while allowing for expressions like "5/100". The user initially uses the input command but is advised against it due to its limitations. Instead, the suggestion is to utilize the isnumeric() function to check for numeric inputs, as it accurately identifies whether the input is a number. Additionally, an alternative method is proposed where the input is accepted as a string, allowing for expressions to be evaluated using str2num. The conversation emphasizes the importance of distinguishing between numeric values and expressions in MATLAB, with resources provided for further assistance on converting strings to numbers.
elbarto
Messages
32
Reaction score
0
Hi all,
Can someone please help me with my MATLAB code. I am trying to get the program to quite if the user tries to input a non-numeric value, and will display an error message. I have got it to work useing the MATLAB input('promt','s') command, but i don't want to use this command because a user can't enter 5/100 etc.
Here is my code.

Matlab:
j = input('number?:')
if isnan(j)==1
    disp('Input must be a number, Function will terminate')
    return
end

I would just like to know if there is a simply way to do this, if not I will use the command I used before and use the eval function I think...

Thank You

Regards Elbarto
 
Last edited by a moderator:
Physics news on Phys.org
elbarto said:
Hi all,
Can someone please help me with my MATLAB code. I am trying to get the program to quite if the user tries to input a non-numeric value, and will display an error message. I have got it to work useing the MATLAB input('promt','s') command, but i don't want to use this command because a user can't enter 5/100 etc.
Here is my code.

Matlab:
j = input('number?:')
if isnan(j)==1
    disp('Input must be a number, Function will terminate')
    return
end

I would just like to know if there is a simply way to do this, if not I will use the command I used before and use the eval function I think...

Thank You

Regards Elbarto
The MATLAB isnan() function is not what you want to use. Instead, the isnumeric() function will evaluate to logical 1 (true) if the argument is a number, and logical 0 (false) if not, such as for a string or logical expression.
 
Another approach is to accept a string and check if it’s a q to quit and if not evaluate it or convert it to a number.

https://www.mathworks.com/help/matlab/ref/str2num.html
https://www.mathworks.com/help/matlab/ref/input.html
Please note that 5/100 is not a number in the Matlab sense rather it’s an expression to be evaluated to a number whereas 0.05 it’s equivalent is a number.
Matlab:
ans=input(‘enter number or q to quit ==>’,’s’)

if ans==‘q’
    quit
else
  num=str2num(ans)
end

You can find a lot of help if you use google by searching on “Matlab convert string to number” as an example. Matlab has a large base of helpful pages on all things Matlab and google has indexed everyone of them..
 
Last edited:

Similar threads

Replies
4
Views
1K
Replies
9
Views
3K
Replies
2
Views
2K
Replies
2
Views
3K
Replies
5
Views
2K
Replies
3
Views
2K
Back
Top