0

我对matlab中的位有疑问。例如,a=101010101011111001。在这里,我想从 'a' 一次生成一组 8 位,并获得它的 bin2dec 形式并将其保存为另一种形式,例如 b。

'a' 有三组:第一组= 10101010,第二组=10111110,第三组=01。

'b' 将具有这些组的 bin2dec。我希望它是,b = [170 190 1]。我想为具有位的大文件执行此操作,而我无法让组拥有我自己的(与我在上面的示例中所做的不同)。考虑 matlab 循环和所有。提前致谢。

4

2 回答 2

1

只需使用重塑!bin2dec 采用整个数组。

a = '10101001111101010110000001111110010101111001011110011011';
b = bin2dec(reshape(a,8,[])')
b =

   169
   245
    96
   126
    87
   151
   155

也都在一条线上。

于 2013-03-08T18:52:52.057 回答
0

如果a是数字,只需添加:

a = num2str(a);

编辑:

好吧,如果我说对了,您想要:

a = '1010100111110101011000000111111001010111100101111001';
thesize = ceil(length(a)/8);
b = zeros(1,thesize);
for i = 1:thesize
    b(i) = bin2dec(a(((i-1)*8+1):min(length(a),(i*8)+1)));
end
于 2013-03-08T17:53:38.913 回答