2

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

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

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

我的行话可能有点离题,我很抱歉(我在错误的上下文中使用了单元格、双精度等吗?)

感谢你们对我的帮助。

4

1 回答 1

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))
    
于 2013-01-28T15:29:07.857 回答