反向查找表

时间:2010-02-18 10:28:31

标签: matlab binary

这是之前SO question的后续问题。现在我有点把它扩展到8位。我使用Amro的解决方案将位扩展到8位。现在我想要一种反向的方法将8位转换回单位。

我只是设法实现了反向使用for循环,这在应用程序中占用了大量时间。

有更快的方法吗?

1 个答案:

答案 0 :(得分:2)

由于您使用的是我上次建议的解决方案,假设您有这些'位'的矩阵N×8,其中每行代表一个8位二进制数。要以矢量化方式转换为十进制,其简单如下:

» M = randi([0 1], [5 8])      %# 5 random 8-bit numbers
M =
     1     0     1     0     1     0     1     1
     0     1     1     0     1     1     1     0
     1     1     0     1     1     0     1     1
     1     0     0     0     0     1     1     0
     1     0     0     1     0     1     1     0
» d = bin2dec( num2str(M) )
d =
   171
   110
   219
   134
   150

另一种解决方案:

d = sum( bsxfun(@times, M, power(2,7:-1:0)), 2)