Matlab 将位数组分组为字节数组

Matlab 将位数组分组为字节数组,matlab,Matlab,我有一个长度为1×240000个元素的位数组。此阵列表示接收到的数字传输 我想将元素的数量减少到13000个,其中每个元素表示序列中的8位(或一个字节) 另外,我希望在不使用任何循环的情况下执行此操作。我已经使用了“重塑”命令,但无法使其正常工作 用(16位而不是240000位)进行澄清: 提前感谢您的建议。这是您可能想要尝试的东西。输出为字符串格式,我猜这就是您希望所有零显示的格式: clear all; a = [0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0]; newsi

我有一个长度为1×240000个元素的位数组。此阵列表示接收到的数字传输

我想将元素的数量减少到13000个,其中每个元素表示序列中的8位(或一个字节)

另外,我希望在不使用任何循环的情况下执行此操作。我已经使用了“重塑”命令,但无法使其正常工作

用(16位而不是240000位)进行澄清:


提前感谢您的建议。

这是您可能想要尝试的东西。输出为字符串格式,我猜这就是您希望所有零显示的格式:

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);
只有一个
用于
循环

输出为:

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

我发现通过num2str和cellstr将其转换为字符串,然后删除所有空格,效果很好:

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=


请注意,为了保留所有非信息性前导零,格式现在仍然是字符串。

不幸的是,num2str函数无法处理我使用的位数,并最终截断了我的函数。不过我确实弄明白了,所以我会发布答案。
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'']','');
'00000001'
'00000010'