【问题标题】:How do I convert a large array of 8 bit binary values in MATLAB?如何在 MATLAB 中转换大量 8 位二进制值数组?
【发布时间】:2010-12-08 09:04:21
【问题描述】:

这是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 秒。有没有更好/更快的方法来做到这一点?

【问题讨论】:

    标签: arrays matlab binary type-conversion


    【解决方案1】:

    试试这个:

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

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

    【讨论】:

      猜你喜欢
      • 2018-09-15
      • 1970-01-01
      • 2011-04-26
      • 1970-01-01
      • 2019-05-11
      • 2019-09-09
      • 1970-01-01
      • 2022-11-03
      • 1970-01-01
      相关资源
      最近更新 更多