Main Content

comm.MLSEEqualizer

最尤系列推定を使用した変調信号のイコライズ

説明

comm.MLSEEqualizer System object™ は、ビタビ アルゴリズムを使用して、分散チャネル経由で線形変調信号をイコライズします。オブジェクトは入力フレームを処理し、信号の最尤系列推定 (MLSE) を出力します。この処理では、有限インパルス応答 (FIR) フィルターとしてモデル化されたチャネルの推定を使用します。

線形変調信号を等化し、最尤系列推定を出力するには、次を行います。

  1. comm.MLSEEqualizer オブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の機能の詳細については、System object とはを参照してください。

作成

説明

mlse = comm.MLSEEqualizer は、最尤系列推定 (MLSE) イコライザー System object mlse を作成します。このオブジェクトは、ビタビ アルゴリズムとチャネル推定を使用して、分散チャネル経由で送信された線形変調信号を等化します。

mlse = comm.MLSEEqualizer(channel)Channel プロパティを channel に設定します。たとえば、comm.MLSEEqualizer([1;0.7;0.5;0.1]) は、チャネル係数を [1;0.7;0.5;0.1] に、ChannelSource'Input port' に設定した MLSE イコライザー オブジェクトを作成します。

mlse = comm.MLSEEqualizer(___,Name=Value) ) は、前の構文の入力引数に加えて、名前と値の引数を 1 つ以上使用してオプションを指定します。たとえば、comm.MLSEEqualizer(TracebackDepth="10",TerminationMethod="Continuous") は、終了方法として連続を使用し、トレースバック長を 10 と想定する MLSE イコライザー オブジェクトを作成します。

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。

プロパティが "調整可能" の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。

チャネル係数のソース。'Property' または 'Input port' として指定します。

  • このプロパティが 'Property' に設定されている場合、Channel プロパティを使用してチャネル係数を指定します。

  • 'Input port' に設定されている場合、2 番目の入力 channel を使用してチャネル係数を指定します。

チャネル係数。有限インパルス応答 (FIR) フィルターとしてモデル化されたチャネルの推定値を含む数値列ベクトルとして指定します。このベクトルの長さが、チャネルのメモリの長さを決定します。ベクトルの長さは、SamplesPerSymbol プロパティの値の整数倍でなければなりません。

依存関係

このプロパティは、ChannelSource プロパティを 'Property' に設定した場合に適用されます。

入力信号コンスタレーション。複素シンボル値のベクトルとして指定します。

例: 既定の [1+1i -1+1i -1-1i 1-1i] は、QPSK 変調されたコンスタレーションのシンボルです。pskmod(0:3,4) を実行することで、そのようなシンボルを生成できます。

ビタビ アルゴリズムのトレースバック長。正の整数として指定します。トレースバック長はトレリス分岐の数 (シンボルの数) を示し、復号化の精度と遅延に影響を与えます。復号化遅延は、出力の最初の復号化されたシンボルよりも前のゼロ シンボルの数を表します。

  • TerminationMethod プロパティを 'Continuous' に設定した場合、復号化遅延はこのプロパティのゼロ シンボルの数と等しい値です。

  • TerminationMethod プロパティを 'Truncated' に設定すると、出力遅延は発生しません。

ビタビ アルゴリズムの終了方法。'Truncated' または 'Continuous' として指定します。

  • このプロパティを 'Continuous' に設定した場合、オブジェクトは、初回のオブジェクト実行時にビタビ アルゴリズムのすべての状態のメトリクスを 0 に初期化します。オブジェクトは、次のフレームで使用するために、各フレームの最後で内部状態メトリクスを保存します。

  • このプロパティを 'Truncated' に設定した場合、オブジェクトはフレームごとにリセットします。ビタビ アルゴリズムは各フレームのデータを個別に処理し、各フレームの最後に状態メトリクスをリセットします。入力データ信号には、オプションのプリアンブルを除き、少なくとも TracebackDepth 個のシンボルが含まれていなければなりません。

    トレースバック パスは、常に最小メトリクスの状態で開始します。状態メトリクスの初期化は、プリアンブルまたはポストアンブルの指定に依存します。

    • PreambleSource プロパティを 'None' に設定した場合、オブジェクトは各データ フレームの先頭ですべての状態のメトリクスを 0 に初期化します。

    • PreambleSource プロパティを 'Property' に設定した場合、オブジェクトは Preamble プロパティで指定されたプリアンブルを使用して、各データ フレームの先頭で状態メトリクスを初期化します。プリアンブルを指定すると、トレースバック パスはそのプリアンブルで示される状態の 1 つで終わります。

    • PostambleSource プロパティを 'None' に設定した場合、トレースバック パスは最小メトリクスの状態で開始します。

    • PostambleSource プロパティを 'Property' に設定した場合、Postamble プロパティに指定されたポストアンブルで示される状態で、トレースバック パスが開始します。ポストアンブルが一意の状態に復号化しない場合、復号化器はポストアンブルで示されるすべての可能な復号化された状態のうち最小の状態を識別します。復号化器は、その後、その状態でトレースバックの復号化を開始します。

リセット イコライザー入力を有効にするオプション。数値または logical の 0 (false) または 1 (true) として指定します。reset 入力引数を使うオブジェクト構文を使用するには、このプロパティを true に設定します。

依存関係

このプロパティは、TerminationMethod プロパティを 'Continuous' に設定した場合に適用されます。

プリアンブルのソース。'None' または 'Property' として指定します。

  • このプロパティを 'None' に設定した場合、オブジェクトは入力信号を処理するときにプリアンブルがないと想定します。

  • このプロパティを 'Property' に設定した場合、Preamble プロパティを使用してプリアンブルを指定します。

依存関係

このプロパティは、TerminationMethod プロパティを Truncated に設定した場合に適用されます。

入力信号に先行するプリアンブル。整数値の行ベクトルとして指定します。プリアンブルの値は [0, M – 1] の範囲になければなりません。M は、Constellation プロパティで指定する信号コンスタレーション内のシンボルの数です。ベクトル内の (k – 1) の整数値は、Constellation プロパティに保存されたベクトル内の k 番目のエントリに対応します。

依存関係

このプロパティは、TerminationMethod プロパティを 'Truncated' に、PreambleSource プロパティを 'Property' に設定した場合に適用されます。

ポストアンブルのソース。'None' または 'Property' として指定します。

  • このプロパティを 'None' に設定した場合、オブジェクトは入力信号を処理するときにポストアンブルがないと想定します。

  • このプロパティを 'Property' に設定した場合、Postamble プロパティを使用してポストアンブルを指定します。

依存関係

このプロパティは、TerminationMethod プロパティを 'Truncated' に設定した場合に適用されます。

入力信号に続くポストアンブル。整数値の行ベクトルとして指定します。ポストアンブルの値は [0, M – 1] の範囲になければなりません。M は、Constellation プロパティで指定する信号コンスタレーション内のシンボルの数です。ベクトル内の (k – 1) の整数値は、Constellation プロパティに保存されたベクトル内の k 番目のエントリに対応します。

依存関係

このプロパティは、TerminationMethod プロパティを 'Truncated' に、PostambleSource プロパティを 'Property' に設定した場合に適用されます。

入力信号のシンボルあたりのサンプル数。整数のスカラー値として指定します。

使用法

説明

Y = mlse(X) は、ビタビ アルゴリズムを使用して、線形変調されたデータ入力信号をイコライズします。

Y = mlse(X,channel) は、ChannelSource プロパティを 'Input port' に設定した場合に、channel をチャネル係数として使用します。

Y = mlse(X,reset) は、TerminationMethod プロパティを 'Continuous' に設定し、ResetInputPort プロパティを true に設定した場合に、reset をリセット信号として使用します。reset が非ゼロの値をもつ場合、オブジェクトはリセットされます。

Y = mlse(X,channel,reset) は、オプションの入力引数 channel および reset によって定義された値を使用します。この構文を使用するには、TerminationMethod'Continuous' に設定し、ChannelSourceResetInputPorttrue に設定します。

入力引数

すべて展開する

線形変調されたデータ入力信号。列ベクトルとして指定します。

データ型: double | single
複素数のサポート: あり

チャネル係数。FIR フィルターの係数を z の降べきの順で含む数値列ベクトルとして指定します。このベクトルの長さはチャネル メモリに一致し、これは、SamplesPerSymbol プロパティで指定された、入力シンボルあたりのサンプル数の整数倍でなくてはなりません。

依存関係

この入力引数を有効にするには、ChannelSource'Input port' に設定します。

データ型: double | single
複素数のサポート: あり

リセット信号。数値スカラーまたは logical として指定します。オブジェクトは、reset が非ゼロの値をもつ場合、オブジェクトを初期条件にリセットします。

依存関係

この入力引数を有効にするには、TerminationMethod'Continuous' に設定し、ResetInputPorttrue に設定します。

データ型: double | logical
複素数のサポート: あり

出力引数

すべて展開する

信号の最尤系列推定。入力信号 X と同じ長さとデータ型をもつ列ベクトルとして返されます。

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

MLSE イコライザーを使用して、周波数選択性チャネルの影響を除去します。

静的チャネル係数を指定します。

chCoeffs = [.986; .845; .237; .12345+.31i];

MLSE イコライザー オブジェクトを作成します。エラー レート計算機オブジェクトを作成します。

mlse = comm.MLSEEqualizer( ...
    TracebackDepth=10, ...
    Channel=chCoeffs, ...
    Constellation=pskmod(0:3,4,pi/4));
errorRate = comm.ErrorRate;

処理ループはデータ フレームを QPSK 変調し、その QPSK 変調信号をマルチパス チャネル経由でフィルター処理し、イコライゼーションと QPSK 復調を適用して、累積エラー レート統計を計算します。

snr = 9;
for n = 1:50
    data= randi([0 3],100,1);
    modSignal = pskmod(data,4,pi/4,'gray');

    chanOutput = awgn(filter(chCoeffs,1,modSignal),snr,'measured');
    
    eqSignal = mlse(chanOutput);
    demodData = pskdemod(eqSignal,4,pi/4,'gray');
    
    errorStats = errorRate(data,demodData);
end

ビット エラー レートおよびエラー数を表示します。

ber = errorStats(1)
ber = 0.0156
numErrors = errorStats(2)
numErrors = 78

アルゴリズム

すべて展開する

参照

[1] Proakis, John G. Digital Communications. 5th ed. New York: McGraw Hill, 2007.

[2] Steele, Raymond, Ed. Mobile Radio Communications. Chichester, England: John Wiley & Sons, 1996.

拡張機能

バージョン履歴

R2012a で導入