What is the most correct way of determining whether variable contains a number
19 次查看(过去 30 天)
显示 更早的评论
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 个评论
回答(3 个)
Chunru
2021-7-28
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 个评论
Image Analyst
2021-7-28
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Whos 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!