Matlab:用作布尔值时的二进制数不符合预期吗?

des*_*ons 1 binary matlab boolean

我试图在Matlab中使用二进制数的组件作为布尔值.不幸的是,他们没有像我期望的那样行事.以下面的代码为例:

for x = dec2bin(0:1)'
    x(1)  % the leading bit of x
    if logical(x(1))
        disp('yes')
    else
        disp('no')
    end
end
Run Code Online (Sandbox Code Playgroud)

它输出:

ans = 0
yes
ans = 1
yes
Run Code Online (Sandbox Code Playgroud)

有人知道为什么会这样,当x(1)为1时我怎么能输出'yes',否则输出'no'?

谢谢!

Oli*_*rth 6

dec2bin()将数字转换为字符串表示形式,因此x(1)获取char,而不是int.因此,它将是对应于'0''1'(分别为48或49)的ASCII值. logical()简单地测试它的参数是否为非零,这在两种情况下都是正确的.

解决方案只是用来bitget()代替.