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
我有下面的 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