最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Hadamard Code Generator

コードの直交集合からのアダマール符号の生成

ライブラリ

Comm Sources の Sequence Generators サブライブラリ

説明

Hadamard Code Generator ブロックは、その行がコードの直交集合を構成するアダマール行列からアダマール符号を生成します。直交符号は、受信側と送信側とを完全に同期させる通信システムでの拡散に利用可能です。これらのシステムでは、コードが完全に無相関であるため、逆拡散を行うのが理想的となります。

アダマール符号を構成するのは、アダマール行列の各行です。アダマール行列は、エントリを +1 か -1 のみとする正方行列で、行と列は相互に直交しています。N が 2 の非負のべき乗である場合、HN で示される N 行 N 列のアダマール行列は、次のように再帰的に定義されます。

H1=[1]H2N=[HNHNHNHN]

N 行 N 列のアダマール行列には、次の特性があります。

HNHNT = NIN

ここで、IN は N 行 N 列の単位行列です。

Hadamard Code Generator ブロックが出力するのは HN の 1 つの行です。この出力はバイポーラです。コードの長さ N は [Code length] パラメーターで指定します。[Code length] の値は 2 のべき乗でなければなりません。アダマール行列の行インデックスは、[0, 1, ... , N-1] の範囲にある整数を、[Code index] パラメーターの値として指定します。

パラメーター

Code length

アダマール符号の長さを指定する値で、2 のべき乗で示される正の整数です。

Code index

0 から N-1 までの整数です。ただし、N はアダマール行列の行を指定する [Code length] です。

Sample time

出力信号の各サンプル間の時間。非負の実数スカラーで指定します。

Samples per frame

出力信号の 1 つの列のサンプル数。正の整数スカラーで指定します。

メモ

出力更新間の時間は、[Samples per frame][Sample time] の積に等しくなります。たとえば、[Sample time][Samples per frame] が 1 の場合には、ブロックは毎秒 1 サンプルを出力します。[Samples per frame] を 10 に増やすと、10 行 1 列のベクトルが 10 秒ごとに出力されます。こうすることで、同等の出力レートが [Samples per frame] パラメーターに依存しなくなります。

Output data type

ブロックの出力型は int8 または double として指定できます。既定の設定では、ブロックはこれを double に設定します。

シミュレーション実行方法

シミュレーション モードを選択します。

コード生成

モデルの最初の実行時に、コードをシミュレートして生成します。ブロックの構造が変更されていない場合は、以降のモデルの実行でコードは再生成されません。

シミュレーション モードが [コード生成] の場合、ブロックに対応する System object では最大 9 個の入力を受け入れます。

インタープリター型実行

コードを生成せずにモデルをシミュレートします。このオプションを使用すると起動時間が速くなりますが、その後のシミュレーションのパフォーマンスが低下する可能性があります。

直交拡散 - 単一ユーザーと 2 ユーザーとの比較

次のモデル例では、単一ユーザー システムと、2 つのデータ ストリームが異なる直交符号によって独立して拡散される 2 ユーザー データ送信システムを比較します。

このモデルは、BPSK 変調されるランダムなバイナリ データ (実数) を使用します。これは、長さ 64 のアダマール符号で拡散されてから、AWGN チャネルで送信されます。受信側には、逆拡散器に続いて BPSK 復調器があります。こちらのモデル hadamard_block_example1 を開きます。

modelname = 'hadamard_block_example1';
open_system(modelname);
sim(modelname);

同じデータとチャネル設定に対して、モデルは単一ユーザーおよび 2 ユーザーの送信のパフォーマンスを計算します。

個々のユーザーについては、誤り率はどちらの場合もまったく同じであることに注意してください。これは、アダマール符号が理想的な相互相関特性をもつため、完全な逆拡散が可能であることを示しています。

このモデルを使用して詳細な確認を行うには、個々のユーザーに対して別の [Code length] または [Code index] を指定して、相対的なパフォーマンスの変化を調べます。

close_system(modelname, 0);

直交拡散 - マルチパス シナリオ

次のモデル例では、信号が複数のパスにわたって送信される単一ユーザー システムを考えます。これは、信号が複数のパスで受信され、それぞれのパスの振幅と遅延が異なる移動体チャネル環境と同等です。マルチパス送信を活用するため、受信側は独立したパスをコヒーレントに結合するダイバーシティ受信を使用します。

システムをシンプルにするため、シャドウイングの影響は考慮されず、受信側にはパスの数とそれぞれの遅延についての "事前の" 知識はありません。こちらのモデル hadamard_block_example2 を開きます。

modelname = 'hadamard_block_example2';
open_system(modelname);
sim(modelname);

最初の例の、使用された拡散符号と同じものを使用するデータ送信に対し、今回は、その例に比べてパフォーマンスの劣化がみられます (前の場合の誤り 81 に対して 180)。これは、選択した直交拡散符号の自己相関が理想的でないためで、これらの個々のパスを完全に解決することができなくなっています。したがって、ダイバーシティの組み合わせのメリットは認められません。

このモデルを使用して詳細な確認を行うには、別のパス遅延を選択して、同じ符号に対してパフォーマンスの変化を調べます。また、同じ遅延で別の符号を試します。

close_system(modelname, 0);

拡張機能

R2006a より前に導入