这是之前SO question的后续问题。现在我有点把它扩展到8位。我使用Amro的解决方案将位扩展到8位。现在我想要一种反向的方法将8位转换回单位。
我只是设法实现了反向使用for循环,这在应用程序中占用了大量时间。
有更快的方法吗?
答案 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)