这是another SO question of mine的后续问题。
我有一大堆8位二进制值,我想将其转换回uint8。
我使用了上一个问题中的Amro的lookupTable解决方案。现在我想做相反的事情。我想做一个查询表,但遗憾的是我无法做到。
我设法做的是:
temp = ones([(TotalPixel),1], 'uint8');
for iter2 = 1 : TotalPixel,
temp(iter2,1) = sum(Data(iter2,1:8).*2.^(7:-1:0));
end
但for循环太慢,因为转换[76800 x 1]数组需要2秒。有更好/更快的方法吗?
答案 0 :(得分:3)
试试这个:
temp = uint8(Data*(2.^(7:-1:0))');
请注意,此答案与您提出的an edit I made to an answer I gave previous question基本相同。你曾在那里询问过只转换一行12位值,但我已经添加了一个额外的讨论,说明如何使用matrix multiply将其扩展为一次转换多个值。答案与此之间的区别仅在于位数和包含UINT8以更改变量类型。