【问题标题】:Matlab: Comparing different variable typesMatlab:比较不同的变量类型
【发布时间】:2020-12-08 23:34:17
【问题描述】:

我有下面的 Matlab 代码。变量“k”可以赋值为 1、2、3 或“N”。基于“k”的值,我需要执行后续的 if 语句。我认为 Matlab 不会执行下面的 if 语句并返回值 k1=k2=0 但它会做一些不同的事情。当我发出“whos”命令时,我看到了 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

【问题讨论】:

  • 'N' 是一个 char。与 数字 比较时,此字符被解释为其 ASCII 码,即78。因此,两个“if”条件都为真

标签: matlab compare variable-types


【解决方案1】:

使用ischar()函数作为检查

一种方法是在评估其他两个内部 if 语句之前添加一个包装/外部 if 语句来检查 k 是否不是字符(字符)。如果变量k(输入)是char(字符),则函数ischar() 将评估为“true”,否则为false。在这种情况下,我们使用~ 波浪号来表示结果的非/补码。这会反转大小写,当变量 k(输入)不是 char(字符)时,~ischar(k) 将评估为“true”。简而言之,保护/外部 if 语句可以理解为 “如果 k 不是语句中的字符处理”

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 运行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 2019-01-23
    • 2012-10-25
    • 1970-01-01
    • 2012-10-10
    相关资源
    最近更新 更多