我正在寻找一种在Matlab中获取dec2bin
变量的快速方法,以便它返回一个逻辑变量向量。例如,给定数字n=8
,输出将为[1,0,0,0]。
我怎么能这样做?
答案 0 :(得分:7)
最简单的方法是简单地爆炸dec2bin
返回的二进制表示(已经是一个字符串!):
dec2bin(n) == '1'
对于n = 8
,这将返回逻辑向量
1 0 0 0
如果n
是数字向量,这也会有效。
答案 1 :(得分:3)
由于字符串'1'是char(49)而字符串'0'是char(48),因此您可以使用:
bin = dec2bin(dec) - 48;
这会将结果输出为双精度数组,因为您正在对数组执行算术运算(来自«dec2bin»的字符串在Matlab中被视为数组)
如果要将非常高的整数转换为二进制,我建议使用以下代码:
bin = mod(floor(dec.*2.^-(floor(log2(dec)):-1:0)),2);
为了将二进制向量转换为十进制:
dec = sum(bin.*2.^((length(bin)-1):-1:0));
答案 2 :(得分:1)
请勿使用dec2bin
,而是使用bitget
:
bitget(n, fix(log2(n)) + 1:-1:1)
<强> P.S:强> 如果您有一个数字数组,并且希望其二进制表示形式为位矩阵,那么您可能需要查看this related question。
n = 8
b = bitget(n, fix(log2(n)) + 1:-1:1)
这导致:
b =
1 0 0 0