0

matlabのビットについて質問があります。たとえば、a=101010101011111001です。ここでは、「a」から一度に8ビットのグループを作成し、そのbin2dec形式を取得して、bなどの別の形式で保存します。

'a'には3つのグループがあります:first = 10101010、second = 10111110、third=01。

'b'には、これらのグループのbin2decが含まれます。私はそれをb=[1701901]にしたい。(上記の例で作成したのとは異なり)グループに独自のグループを作成することができないビットを含む大きなファイルに対して実行したいと思います。matlabループとすべてを考慮します。前もって感謝します。

4

2 に答える 2

1

reshape を使用するだけです。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 に答える