why does str2num create a figure?
Show older comments
I am using the property that str2num(string) returns an empty when the string is not solely made of numbers. In my case, I want to ignore the lines of my file that are not numers only so if ~isempty(str2num(fgetl(fid))) do something. However, a window popped up. It turns out "lines 42" - an entry in my file - caused this. Upon looking into it, I found
str2num('lines 1') or variations pop up a figure window; str2num('line') actually draws a line from (0,0) to (1,1). Also, str2num('lines') returns a matrix of values.
Why? And moreover, is there a workaround or a function I can use instead?
1 Comment
Jan
on 16 Feb 2012
Thanks for pointing to this old problem.
Accepted Answer
More Answers (1)
Pepijn
on 16 Feb 2012
0 votes
3 Comments
Jan
on 16 Feb 2012
This is neither a bug nor an easteregg, but the expected behaviour. It might even be useful for situations like: "str2num('sin(1)')". But it can even be dangerous, e.g. if your file contains a line like "!format C:" or "!del *.* \S". Even a "clear" might be very confusing for your function.
Walter Roberson
on 16 Feb 2012
str2double(regexp(string, 'split'))
Jan
on 16 Feb 2012
@Pepijn: Nicer: "if ~any(isletter(string))". But this check fails for "1.0e1" and "-.-.9-8.67-87.678".
What is is desired reply for "1 2"? When I expect the user to insert a number, NaN is a very useful answer.
Categories
Find more on Data Type Conversion 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!