如何在MATLAB中转换大量的8位二进制值?

时间:2009-10-20 14:30:30

标签: arrays matlab binary type-conversion

这是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秒。有更好/更快的方法吗?

1 个答案:

答案 0 :(得分:3)

试试这个:

temp = uint8(Data*(2.^(7:-1:0))');

请注意,此答案与您提出的an edit I made to an answer I gave previous question基本相同。你曾在那里询问过只转换一行12位值,但我已经添加了一个额外的讨论,说明如何使用matrix multiply将其扩展为一次转换多个值。答案与此之间的区别仅在于位数和包含UINT8以更改变量类型。