我有一个长度为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]
提前感谢您的建议。
答案 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'
请注意,格式现在仍然是一个字符串,以便保留所有非信息性的前导零。