ビット配列をバイト配列にグループ化する

私は240,000要素長の1ビットの配列を持っています。このアレイは、受信されたデジタル伝送を表す。

私は要素の数を1,30,000に減らしたいと思います。各要素はシーケンスから8ビット(または1バイト)を表します。

また、私はループを使用せずにこれをしたいと思います。私はreshapeコマンドでプレイしたが、私はそれを動作させることができませんでした。

明確にするには(240,000の代わりに16ビット):

Input: [0, 0, 0, 0, 0, 0, 0, 1; 0, 0, 0, 0, 0, 0, 1, 0,]
Output: [00000001, 00000010]

事前にお寄せいただきありがとうございます。

0

2 答え

これはあなたが試してみたいかもしれないものです。出力は文字列形式になっています。すべてのゼロを表示したいと思っています。

clear all;
a = [0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0];
newsize = length(a)/8;
c = '';
b = cellstr('');
for j = 1:newsize
    c = [c int2str(a((8*(j-1)+1):(8*(j))))];
    b = [b cellstr(c)];
    c = '';
end
b = b(2:end);

for ループは1つのみです。

出力は次のとおりです。

b: ['0  0  0  0  0  0  0  1','0  0  0  0  0  0  1  0']
0
追加された

私はnum2strとcellstrを介して文字列に変換してから、すべての空白を削除していました。okey:

i=[0, 0, 0, 0, 0, 0, 0, 1; 0, 0, 0, 0, 0, 0, 1, 0,];

i=cellstr(num2str(i));
o=regexprep(i,'[^\w'']','');

出力:     o =

'00000001'
'00000010'

すべての非有益な先行ゼロを維持するために、フォーマットはまだ文字列であることに注意してください。

0
追加された
残念ながら、num2str関数は、使用しているビット数では機能せず、関数の切り捨てが終了します。私はこれを把握したので、私は答えを投稿します。
追加された 著者 dfmuir,