我有下面的Matlab代码。变量";k〃;可以指定值,1、2、3或"N"。基于"0"的值;k〃;我需要执行后续的if语句。我以为Matlab不会执行下面的if语句并返回值k1=k2=0,但它做了一些不同的事情。当我发布";谁";命令我看到了Matlab生成的变量类型。你能帮我理解Matlab在做什么吗?我还能如何比较/实现我正在努力做的事情?
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()
函数作为检查
一种方法可以是添加一个包装/外部if语句来检查k
是否不是char(字符(,然后再评估其他两个内部if语句。函数CCD_ 3将评估为"0";真";如果变量k
(输入(是char(字符(,则为false。在这种情况下,我们使用~
波浪号来指示结果的非/补码。这颠倒了情况,并且CCD_;真";当变量CCD_ 7(输入(不是字符(字符(时。简而言之,保护/外部if语句可以读作">";如果CCD_ 8是而不是。
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运行