Matlab:比较不同的变量类型

Matlab: Comparing different variable types

我有下面的 Matlab 代码。变量“k”可以赋值,1、2、3 或 'N'。根据“k”的值,我需要执行后续的 if 语句。我认为 Matlab 不会执行下面的 if 语句和 return 值 k1=k2=0 但它做了一些不同的事情。当我发出“whos”命令时,我看到了 Matlab 生成的变量类型。你能帮我理解 Matlab 想要做什么吗?我还能如何 compare/achieve 我想做什么?

Matlab代码

k = 'N'
k1=0;
k2=0;

if k >= 1
k1 = 1;
end

if k >= 2
k2 = 2;
end

k1
k2

Matlab 输出

k =

    'N'


k1 =

     1


k2 =

     2

使用ischar()函数作为检查

一种方法是添加一个 wrapping/outer if 语句来检查 k 不是 char(字符),然后再评估其他两个内部 if 语句。如果变量 k(输入)是 char(字符),则函数 ischar() 的计算结果为“true”,否则为 false。在这种情况下,我们使用 ~ 波浪号来表示结果的 not/complement。这会反转大小写,当变量 k(输入)不是 char(字符)时,~ischar(k) 将计算为“true”。简而言之,guarding/outer if 语句可以读作 "If k is not a char proceed within the statement"=29 =].

k = 'N';
k1=0;
k2=0;

if ~ischar(k)
if k >= 1 
k1 = 1;
end

if k >= 2 
k2 = 2;
end
end

k1
k2

运行 使用 MATLAB R2019b