整数数组转换为二进制数组。

10

我有一个整数数组:

a=[3,4,5,6,7];

我想将它转换为每四位一组的二进制数组。针对上述整数数组,我希望得到以下二进制数组:

abinary=[0,0,1,1, 0,1,0,0, 0,1,0,1, 0,1,1,0, 0,1,1,1];

有没有快速的方法可以做到这一点?


3个回答

18

Matlab内置函数DEC2BIN可用。它可以创建一个字符数组,但是将其转换回数字很容易。

%# create binary string - the 4 forces at least 4 bits
bstr = dec2bin([3,4,5,6,7],4)

%# convert back to numbers (reshape so that zeros are preserved)
out = str2num(reshape(bstr',[],1))'

你有类似于Python的东西吗? - Shreta Ghimire

4
您可以使用BITGET函数:点击此处
abinary = [bitget(a,4); ...  %# Get bit 4 for each number
           bitget(a,3); ...  %# Get bit 3 for each number
           bitget(a,2); ...  %# Get bit 2 for each number
           bitget(a,1)];     %# Get bit 1 for each number
abinary = abinary(:)';      %'# Make it a 1-by-20 array

我甚至不知道bitget。不过,我会制作一个循环来构建二进制,以便能够在任意位数上使用它。无论如何+1。 - Jonas

1

虽然我回答晚了,但是MATLAB有一个可以直接完成这个任务的函数de2bi

out = de2bi([3,4,5,6,7], 4, 'left-msb');

de2bi 仅在 通信系统工具箱 中可用。类似的函数 decimalToBinaryVector 存在于 数据采集工具箱 中。 - nekomatic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接