3

我正在寻找一种dec2bin在 Matlab 中获取变量的快速方法,以便它返回一个逻辑变量向量。例如,给定一个数字n=8,输出将为 [1,0,0,0]。我怎样才能做到这一点?

4

3 回答 3

8

最简单的方法是简单地分解返回的二进制表示dec2bin(这已经是一个字符串!):

dec2bin(n) == '1'

为此n = 8返回一个逻辑向量

1     0     0     0

如果n是数字向量,这也将起作用。

于 2013-05-09T19:59:18.107 回答
3

由于字符串 '1' 是 char(49) 而字符串 '0' 是 char(48) 你可以使用:

bin = dec2bin(dec) - 48;

这会将结果输出为 doubles 数组,因为您正在对数组执行算术运算(来自 «dec2bin» 的字符串在 Matlab 中被视为数组)

如果要将非常高的整数转换为二进制,我建议使用以下代码:

bin = mod(floor(dec.*2.^-(floor(log2(dec)):-1:0)),2);

为了将二进制向量转换为十进制:

dec = sum(bin.*2.^((length(bin)-1):-1:0));
于 2015-07-22T16:00:18.067 回答
1

不要使用dec2binbitget而是使用:

bitget(n, fix(log2(n)) + 1:-1:1)

PS: 如果您有一个数字数组,并且您希望将其二进制表示为位矩阵,您可能想看看这个相关问题

例子

n = 8
b = bitget(n, fix(log2(n)) + 1:-1:1)

这导致:

b =
     1     0     0     0
于 2013-05-09T20:00:08.730 回答