生成位矩阵

bri*_*tar 3 matlab bit-manipulation octave

我想取一个n定义通信代码中位数的整数和一个定义我分配给位的字母表的向量0:n-1,并输出一个矩阵/单元格数组,其中包含每个状态的字母表示法,即:

function M = mycommarray(3,[-1,1])
Run Code Online (Sandbox Code Playgroud)

产生

M = [{-1,-1,-1}, {-1,-1,1}...]
Run Code Online (Sandbox Code Playgroud)

我尝试用这种方法更容易dec2bin(0:7,3),但似乎没有一种快速的方法可以将零写成-1s.

是否有接近预先包装的东西呢?在这种情况下,我不希望任何人为我(与家庭作业相关).

Eit*_*n T 5

dec2bin实际上并不是解决问题的最佳方法,因为它的结果是一个字符串数组(一个字符矩阵),其中每个数字都是一个字符.如果要'-1'表示逻辑"0",那将是两个字符,并且它会引入问题.

考虑一种替代方法bitget.利用Shai的建议,执行以下操作:

[bits, values] = meshgrid(1:3, 0:7);
M = 2 * bitget(values, bits) - 1;
Run Code Online (Sandbox Code Playgroud)

将产生你想要的东西:

M =
    -1    -1    -1
     1    -1    -1
    -1     1    -1
     1     1    -1
    -1    -1     1
     1    -1     1
    -1     1     1
     1     1     1
Run Code Online (Sandbox Code Playgroud)