matlab - 在处理二进制数时,如何从 char 格式转换为 double 格式?

标签 matlab binary char format double

我有一段代码可以输出我想要的内容,但格式错误

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

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

我尝试过使用double()函数...

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

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

我的行话可能有点偏离,我很抱歉(我是否在错误的上下文中使用了 cell、double 等?)

谢谢你帮助我。

最佳答案

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

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))
    

关于matlab - 在处理二进制数时,如何从 char 格式转换为 double 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14565125/

相关文章:

matlab - 如何将 Simulink 模块的输出作为输入反馈?

Matlab矩阵地址

c++ - 大整数被误读/误写入二进制文件

java - 截断二进制对数

c - 将有符号字符读为无符号字符 - 类型提升

matlab - 如何将 RGB 图像转换为灰度图像但保留一种颜色?

matlab - 信息还是信息?南还是南?

python - 文件 i/o 和二进制模式的含义

SQL 2008 压缩

字符数组打印比我在 C 中想要的更多