将位数组分组为字节数组

时间:2011-11-24 18:05:11

标签: matlab

我有一个长度为1乘240,000个元素的位数组。该阵列代表接收的数字传输。

我想将元素数量减少到1,30,000,其中每个元素代表序列中的8位(或一个字节)。

此外,我想在不使用任何循环的情况下执行此操作。我玩过reshape命令但是我无法让它工作。

用(16位而不是240,000)澄清:

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

提前感谢您的建议。

2 个答案:

答案 0 :(得分:0)

这是您可能想要尝试的内容。输出是字符串格式,我想这是你想要显示的所有零:

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循环。

输出是:

b: ['0  0  0  0  0  0  0  1','0  0  0  0  0  0  1  0']

答案 1 :(得分: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'

请注意,格式现在仍然是一个字符串,以便保留所有非信息性的前导零。