将二进制位连接成一个数字

时间:2014-03-31 16:08:43

标签: matlab

我想将最后四位二进制数串联成一个数字,我已尝试过以下代码

x8=magic(4)
x8_n=dec2bin(x8)
m=x8_n-'0'

给出了以下输出     m =

     1     0     0     0     0
     0     0     1     0     1
     0     1     0     0     1
     0     0     1     0     0
     0     0     0     1     0
     0     1     0     1     1
     0     0     1     1     1
     0     1     1     1     0
     0     0     0     1     1
     0     1     0     1     0
     0     0     1     1     0
     0     1     1     1     1
     0     1     1     0     1
     0     1     0     0     0
     0     1     1     0     0
     0     0     0     0     1

现在我想每行最后4位并将其转换为整数

2 个答案:

答案 0 :(得分:3)

n = 4; %// number of bits you want
result = m(:,end-n+1:end) * pow2(n-1:-1:0).'; %'// matrix multiplication

无论如何,直接在x8使用mod会更容易,而不需要m的中间步骤:

result = mod(x8(:), 2^n);

在你的例子中:

result =
     0
     5
     9
     4
     2
    11
     7
    14
     3
    10
     6
    15
    13
     8
    12
     1

答案 1 :(得分:2)

这可能是另一种方法 -

n = 4; %%// number of bits you want
out = bin2dec(num2str(m(:,end-n+1:end)))

输出 -

out =

     0
     5
     9
     4
     2
    11
     7
    14
     3
    10
     6
    15
    13
     8
    12
     1