我正在尝试在Matlab中将二进制数字的组件用作布尔值。不幸的是,它们的行为不像我期望的那样。以下面的代码为例:
for x = dec2bin(0:1)' x(1) % the leading bit of x if logical(x(1)) disp('yes') else disp('no') end end 它输出:
ans = 0 yes ans = 1 yes 有人知道这是为什么吗,当x(1)为1时我如何得到它输出“是”,否则我知道如何输出?
谢谢!
回答:
dec2bin()将数字转换为
字符串表示形式,因此x(1)获得一个
char ,而不是一个
int 。因此,它将是与'0'或'1' (分别为48或49)相对应的ASCII值。
logical()仅测试其参数是否为非零,在两种情况下均是如此。
解决方案是简单地使用
bitget()代替。
更多&回答...