八进制 - 创建所有二进制值的矩阵



在八度中,给定一个数字(比如 5),我需要制作一个 (2^5 X 5) 的矩阵,每行都有从 0 到 2^5 - 1 的数字的二进制表示,即矩阵就像

[[ 0, 0, 0, 0,

0],

[ 0, 0, 0, 0, 1]]

[ 0, 0, 0, 1, 0]]

等等。是否有任何内置函数可以执行此操作?无法弄清楚如何有效地做到这一点?我能想到的一种方法是运行一个循环并从 0:(2^5-1) 为每个值生成二进制值并将其存储在矩阵中,但这似乎效率很低。

de2bi可能在八度通信工具箱中,但我没有安装它。 以下是十进制到二进制的单行实现,可能足够好

nums = (1:7)';
bsxfun(@(u,v)bitand(u,v)~=0, [16 8 4 2 1], nums)

这是另一种方式:

N = 5;
result = mod(floor(bsxfun(@rdivide, (0:2^N-1).', 2.^(N-1:-1:0))), 2);

我不知道八度,但在 Matlab 中你有de2bi

n = 5;
nums = 0:2^n-1;
b = de2bi(nums);

最新更新