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

Arrays 如何在MATLAB中转换8位二进制值的大数组?,arrays,matlab,binary,type-conversion,Arrays,Matlab,Binary,Type Conversion,这是我们的后续问题 我有一个8位二进制值的大数组,我想把它转换回uint8 我使用了前一个问题中Amro的可查找解决方案。现在我想做相反的事情。我想做一个查找表,但遗憾的是我不能 我设法做到了以下几点: temp = ones([(TotalPixel),1], 'uint8'); for iter2 = 1 : TotalPixel, temp(iter2,1) = sum(Data(iter2,1:8).*2.^(7:-1:0)); end 但是for循环太慢,因为转换

这是我们的后续问题

我有一个8位二进制值的大数组,我想把它转换回uint8

我使用了前一个问题中Amro的可查找解决方案。现在我想做相反的事情。我想做一个查找表,但遗憾的是我不能

我设法做到了以下几点:

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

试试这个:

temp = uint8(Data*(2.^(7:-1:0))');
请注意,这个答案与您所问的答案基本相同。您曾询问过如何仅转换一行12位值,但我添加了一个额外的讨论,讨论了如何将其扩展为使用。这个答案和这个答案之间的区别只是位数和包含更改变量类型的变量