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