在matlab中更改dec2bin以获得逻辑向量

时间:2013-05-09 19:38:29

标签: matlab

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

3 个答案:

答案 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