在使用二进制数时,如何将char格式转换为double格式?

时间:2013-01-28 15:18:43

标签: matlab binary char format double

我有一段代码输出我想要的但格式错误的

for k=1:100
    bin(k,:)=dec2bin(randi([0 31]),5);
end

我希望输出为100x5双数组,每个单元一位(0或1值)。

我尝试过使用double()功能...

for k=1:100
    bin(k,:)=double(dec2bin(randi([0 31]),5));
end

...但是返回正确的格式,错误的值。

我的行话可能有些偏差,我道歉(我是在错误的情境中使用单元格,双重等等吗?)

感谢您帮助我。

1 个答案:

答案 0 :(得分:2)

有很多方法可以做你想要的。最简单的实际上是从一开始就生成二进制数组,没有循环:

bin = rand(100, 5) > 0.5

其他替代方案:

  1. 如果您有一个整数数组并且想要将其转换为位,则可以在循环中使用bitget而不是dec2bin

    bin(k, :) = bitget(randi([0 31]), 5:-1:1)
    
  2. 如果您已经有一个表示二进制数的字符串数组,并且您想对其进行操作,则可以使用空格分隔这些位,然后应用str2num

    bin = reshape(str2num(sprintf('%c ', bin)), size(bin))