3

通信コードのビット数を定義する整数nと、ビットに割り当てるアルファベットを定義するベクトルを取得し、0:n-1各状態のアルファベット表記を含む行列/セル配列を出力したいと思います。

function M = mycommarray(3,[-1,1])

生産する

M = [{-1,-1,-1}, {-1,-1,1}...]

でこれをもっと簡単にしようとしましたが、ゼロをsdec2bin(0:7,3)にする簡単な方法はないようです。-1

これを行う事前にパッケージ化されたものに近いものはありますか? この場合、誰にも作ってほしくありません (宿題に関連して)。

4

3 に答える 3

5

dec2binその結果は文字列の配列 (つまり、文字の行列) であり、各桁は文字であるためです。'-1'論理的な「0」を表現したい場合、それは 2 文字になり、問題が発生します。

で別の方法を検討してくださいbitget。Shai の提案を利用して、次の操作を行います。

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

は、あなたが望むものを生成します:

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
于 2013-05-05T10:54:28.223 に答える
1

次のようにすることもできます。

M = 2 * (dec2bin(0:7, 3)=='1')-1;

それは次を返します:

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

ただし、速度は遅くなります。1024 個の値と 10 ビットの場合、dec2bin0.0002 秒 ( meshgrid+ ) に対して 0.0012秒 ( ) を取得します。bitget

于 2017-01-06T03:37:40.070 に答える