What is the most correct way of determining whether variable contains a number
    14 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
From what i have read, isnumeric is useless since eg. nan returns numeric output. Some answers mention to use str2double but str2double(2) returns NaN as does str2double("a"). So is there a universal function that is capable to eat both strings and numbers and tell you whether the string is a number (and if supplied with a number obviously returns true as well)?
0 Kommentare
Antworten (3)
  Chunru
      
      
 am 28 Jul. 2021
        It seems that you have to write your own function:
[t, f] = isstranum(5)
[t, f] = isstranum('nan')
[t, f] = isstranum('-512.3')
[t, f] = isstranum('abc')
function [tf, y] = isstranum(x)
    if isnumeric(x)
        tf = true;
        y = x;
    elseif isstring(x) || ischar(x)
        if strcmpi(x, 'nan') || strcmpi(x, 'inf') 
            tf = true;
            y = str2double(x);
        else
            y = str2double(x);
            if isnan(y)
                tf = false;
                y = [];
            else
                tf = true;
            end
        end
    else
        tf = false;
        y = [];
    end
end
0 Kommentare
  Image Analyst
      
      
 am 28 Jul. 2021
        You can use isempty() to determine if a variable has any variable of any class whatsoever in it:
if isempty(yourVariable)
    fprintf('yourVariable has nothing in it.\n')
else
    fprintf('yourVariable has something in it.\n')
end
You might also take a look at exist(yourVariable, 'var') to see if a variable by that name even exists at all (empty or not).
0 Kommentare
Siehe auch
Kategorien
				Mehr zu Characters and Strings finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



