メインコンテンツ

comm.GeneralQAMDemodulator

任意の QAM コンスタレーションの復調

説明

comm.GeneralQAMDemodulator System object™ は、一般的な直交振幅変調 (QAM) 手法を使用して変調された信号を復調します。

一般的な直交振幅変調信号を復調するには、次のようにします。

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

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

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

作成

説明

gqamdemod = comm.GeneralQAMDemodulator は、一般的な QAM 復調器 System object gqamdemod を作成します。このオブジェクトは、一般的な直交振幅変調 (QAM) 方式を使用して、入力信号を復調します。

gqamdemod = comm.GeneralQAMDemodulator(const)Constellation プロパティを const に設定します。

gqamdemod = comm.GeneralQAMDemodulator(___,Name=Value) は、前の構文の任意の入力引数の組み合わせに加えて、オプションの名前と値の引数を 1 つ以上使用してプロパティを設定します。たとえば、OutputDataType="double" は、出力のデータ型を "double" に設定します。

プロパティ

すべて展開する

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

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

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

信号コンスタレーション。信号コンスタレーション内の点をリストしたベクトルとして指定します。コンスタレーション ベクトルの長さによって変調次数が決まります。

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

出力データ形式。logical の 0 (false) または 1 (true) として指定します。

  • このプロパティを true または 1 に設定すると、復調器はビット値の列ベクトルを出力します。ベクトルの長さは、log2(M) に復調シンボルの数を乗算した値になります。ここで、M はコンスタレーション サイズによって定義される変調次数です。

  • このプロパティを false または 0 に設定すると、復調器は 0M–1 の範囲の整数シンボル値から成る列ベクトルを出力します。ベクトルの長さは入力データ ベクトルの長さと同じになります。M は 2 のべき乗でなければなりません。

データ型: logical

復調の判定方法。"Hard decision""Log-likelihood ratio"、または "Approximate log-likelihood ratio" として指定します。

依存関係

このプロパティを有効にするには、BitOutput プロパティを true に設定します。BitOutput プロパティを false に設定すると、オブジェクトは常に硬判定復調を実行します。

ノイズ分散のソース。"Property" または "Input port" として指定します。

依存関係

このプロパティを有効にするには、DecisionMethod プロパティを "Log-likelihood ratio" または "Approximate log-likelihood ratio" に設定します。

ノイズ分散。正のスカラーとして指定します。

依存関係

このプロパティを有効にするには、VarianceSource プロパティを "Property" に設定します。

ヒント

厳密な LLR アルゴリズムは有限の精度演算で指数を計算します。計算に非常に大きな正または負の振幅が含まれる場合、厳密な LLR アルゴリズムの結果は次のようになります。

  • ノイズ分散が極度に大きい値の場合は、Inf または -Inf

  • ノイズ分散と信号強度の両方が非常に小さい値の場合は NaN

近似 LLR アルゴリズムでは指数が計算されません。近似 LLR アルゴリズムを使用することによって、Inf-Inf、および NaN の結果を回避できます。

データ型: double

出力のデータ型。"Full precision""Smallest unsigned integer""double""single""int8""uint8""int16""uint16""int32"、または "uint32" として指定します。

  • OutputDataType プロパティを "Full precision" に設定し、入力データ型が単精度または倍精度のいずれかである場合、出力データ型は入力データ型と同じになります。

  • 入力信号のデータ型が整数データ型である場合に "Smallest unsigned integer" または "Full precision" モードでこのプロパティを使用するには、Fixed-Point Designer™ ユーザー ライセンスがなければなりません。

  • 入力データ型が固定小数点型の場合、出力データ型は、OutputDataType プロパティを "Smallest unsigned integer" に設定したかのように動作します。

  • BitOutput プロパティを true に設定し、DecisionMethod プロパティを "Hard Decision" に設定すると、logical データ型は有効なオプションになります。

  • BitOutput プロパティを true に設定し、DecisionMethod プロパティを "Approximate log-likelihood ratio" に設定した場合は、このプロパティを "Full precision" にのみ設定できます。

  • BitOutput プロパティを true に設定し、DecisionMethod プロパティを "Log-likelihood ratio" に設定した場合、出力データ型は単精度値または倍精度値の入力データ型と同じになります。

依存関係

このプロパティを有効にするには、次のいずれかのオプションを使用します。

  • BitOutput プロパティを false に設定します。

  • BitOutput プロパティを true に設定し、DecisionMethod プロパティを "Hard decision" または "Approximate log-likelihood ratio" に設定します。

固定小数点プロパティ

固定小数点演算に対する完全精度オーバーライド。logical の 0 (false) または 1 (true) として指定します。

  • FullPrecisionOverride プロパティを true または 1 に設定すると、オブジェクトは完全精度ルールを使用してすべての内部演算と出力データ型を計算します。これらの規則は、最も正確な固定長数値を提供します。他の固定長プロパティは個別には適用されないため、オブジェクトはそれらの表示をオフにします。これらの規則は、オブジェクト内で量子化が発生しないことを保証します。必要に応じてビットを追加して、丸めやオーバーフローが確実に発生しないようにできます。

  • FullPrecisionOverride プロパティを false または 0 に設定すると、オブジェクトは個々の固定小数点プロパティ設定によって固定小数点データ型を制御します。

詳細については、固定小数点 System object の完全精度を参照してください。

固定小数点数値の丸め方法。"Ceiling""Convergent""Floor""Nearest""Round""Simplest"、または "Zero" として指定します。

依存関係

このプロパティは、オブジェクトが完全精度構成ではないときに適用されます。このプロパティは、BitOutputtrue に設定し、DecisionMethod"Log-likelihood ratio" に設定したときには適用されません。

固定小数点数値がオーバーフローするときのアクション。"Wrap" または "Saturate" として指定します。このプロパティでオーバーフロー時に取るべき動作を指定します。オーバーフローは、固定小数点計算結果の大きさが、その結果を格納するデータ型とスケーリングの範囲に収まらない場合に発生します。

依存関係

このプロパティは、オブジェクトが完全精度構成ではないときに適用されます。このプロパティは、BitOutputtrue に設定し、DecisionMethod"Log-likelihood ratio" に設定したときには適用されません。

信号コンスタレーションのデータ型。"Same word length as input" または "Custom" として指定します。

依存関係

このプロパティは、BitOutputtrue に設定し、DecisionMethod"Log-likelihood ratio" に設定したときには適用されません。

カスタム信号コンスタレーションの固定小数点データ型。Auto の符号属性をもつスケーリングされていない numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティを有効にするには、ConstellationDataType プロパティを "Custom" に設定します。

Accumulator 1 のデータ型。"Full precision" または "Custom" として指定します。

依存関係

このプロパティを有効にするには、FullPrecisionOverride プロパティを false に設定します。ただし、BitOutput プロパティを true に設定し、DecisionMethod"Log-likelihood ratio" に設定した場合は適用されません。

Accumulator 1 のカスタム固定小数点データ型。Auto の符号属性をもつスケーリングされた numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティを有効にするには、Accumulator1DataType プロパティを "Custom" に設定します。

乗算入力のデータ型。"Same as accumulator 1" または "Custom" として指定します。

依存関係

このプロパティを有効にするには、FullPrecisionOverride プロパティを false に設定します。ただし、BitOutput プロパティを true に設定し、DecisionMethod"Log-likelihood ratio" に設定した場合は適用されません。

乗算入力のカスタム固定小数点データ型。Auto の符号属性をもつスケーリングされた numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティを有効にするには、FullPrecisionOverride プロパティを false に設定し、ProductInputDataType プロパティを "Custom" に設定します。

乗算出力のデータ型。"Full precision" または "Custom" として指定します。

依存関係

このプロパティを有効にするには、FullPrecisionOverride プロパティを false に設定します。ただし、BitOutput プロパティを true に設定し、DecisionMethod"Log-likelihood ratio" に設定した場合、このプロパティは適用されません。

乗算出力のカスタム固定小数点データ型。Auto の符号属性をもつスケーリングされた numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティを有効にするには、ProductOutputDataType プロパティを "Custom" に設定します。

Accumulator 2 のデータ型。"Full precision" または "Custom" として指定します。

依存関係

このプロパティを有効にするには、FullPrecisionOverride プロパティを false に設定します。ただし、BitOutput プロパティを true に設定し、DecisionMethod"Log-likelihood ratio" に設定した場合、このプロパティは適用されません。

Accumulator 2 のカスタム固定小数点データ型。Auto の符号属性をもつスケーリングされた numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティを有効にするには、Accumulator2DataType プロパティを "Custom" に設定します。

Accumulator 3 のデータ型。"Full precision" または "Custom"

依存関係

このプロパティを有効にするには、BitOutput プロパティを true に設定し、DecisionMethod"Approximate log-likelihood ratio" に設定します。

Accumulator 3 のカスタム固定小数点データ型。Auto の符号属性をもつスケーリングされた numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティを有効にするには、Accumulator3DataType プロパティを "Custom" に設定します。

ノイズ スケーリング入力のデータ型。"Same as accumulator 3" または 'Custom" として指定します。

依存関係

このプロパティを有効にするには、BitOutput プロパティを true に設定し、DecisionMethod プロパティを "Approximate log-likelihood ratio" に設定します。

ノイズ スケーリング入力のカスタム固定小数点データ型。Auto の符号属性をもつスケーリングされた numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティを有効にするには、NoiseScalingInputDataType プロパティを "Custom" に設定します。

ノイズ逆分散のデータ型。"Same word length as input" または "Custom" として指定します。

依存関係

このプロパティを有効にするには、BitOutput プロパティを true に、DecisionMethod プロパティを "Approximate log-likelihood ratio" に、VarianceSource プロパティを "Property" に設定します。

ノイズ逆分散のカスタム固定小数点データ型。Auto の符号属性をもつ numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティを有効にするには、InverseVarianceDataType プロパティを "Custom" に設定します。

出力の固定小数点データ型。Auto の符号属性をもつスケーリングされた numerictype (Fixed-Point Designer) オブジェクトとして指定します。

依存関係

このプロパティを有効にするには、FullPrecisionOverride プロパティを false に設定し、OutputDataType プロパティを "Custom" に設定します。

使用法

説明

Y = gqamdemod(X) は、一般的な QAM 方式を使用して入力信号を復調します。

Y = gqamdemod(X,vari) は、さらにノイズ分散 vari を指定し、入力信号に軟判定復調を適用します。

この構文は BitOutput プロパティを true に、DecisionMethod プロパティを "Approximate log-likelihood ratio" または "Log-likelihood ratio" に、さらに VarianceSource プロパティを "Input port" に設定した場合に適用されます。

入力引数

すべて展開する

一般的な直交振幅変調信号。スカラーまたは列ベクトルとして指定します。

BitOutput プロパティを true に設定し、 DecisionMethod プロパティを "Log-likelihood ratio" に設定する場合、入力データ型は単精度または倍精度でなければなりません。BitOutput プロパティの値に応じて、出力 Y は整数値またはビット値になります。

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

ノイズ分散。正のスカラーとして指定します。

データ型: single | double

出力引数

すべて展開する

出力信号。スカラーまたは列ベクトルとして返されます。オブジェクトが値を整数として出力するかビットとして出力するかを指定するには、BitOutput プロパティを使用します。OutputDataType プロパティを使用して出力データ型を指定します。

オブジェクト関数

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

release(obj)

すべて展開する

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

すべて折りたたむ

任意の 3 点コンスタレーションを使ってデータを変復調します。

一般的な直交振幅変調 (QAM) の 3 点コンスタレーションを定義します。

const = [1 1i -1];

定義されたコンスタレーションを使用して、一般的な QAM の変調器 System object と復調器 System object を作成します。

gqamMod = comm.GeneralQAMModulator (const);
gqamdemod = comm.GeneralQAMDemodulator (const);

エラー レート計算機を作成します。

errorRate = comm.ErrorRate
errorRate = 
  comm.ErrorRate with properties:

        ReceiveDelay: 0
    ComputationDelay: 0
             Samples: 'Entire frame'
      ResetInputPort: false

次の手順に従ってループを実行し、データのフレームを処理します。

  1. ランダムなシンボルのシーケンスを生成します。

  2. ランダム データを変調して、直交振幅変調シンボルを生成します。

  3. 変調されたシンボルを加法性ホワイト ガウス ノイズ (AWGN) チャネル経由で送信します。

  4. ノイズを含む受信シンボルを元のデータに復調します。

  5. 送信データと受信データの間の誤り統計を計算します。

for counter = 1:100
     data = randi([0 2],50,1);
     modSignal = gqamMod(data);
     noisySignal = awgn(modSignal,5);
     receivedData = gqamdemod(noisySignal);
     errorStats = errorRate(data,receivedData);
end

エラー レートと誤り数を出力します。

fprintf("Error rate = %f\nNumber of errors = %d\n", ...
      errorStats(1), errorStats(2))
Error rate = 0.045200
Number of errors = 226

詳細

すべて展開する

アルゴリズム

一般的な QAM 復調アルゴリズムは次の手順で構成されます。

  1. 信号コンスタレーションを長さ M のベクトルとして定義し、コンスタレーション ベクトルの各 m 番目の要素を整数 (m−1) にマッピングします。

  2. 信号をスカラーまたは列ベクトルとして入力します。

  3. 信号を復調するには、次のいずれかの判定方法を使用します。

    • 硬判定 — 受信したサンプルごとに、各コンスタレーション点までのハミング距離を計算します。最小ハミング距離に対応するシンボルを選択します。複数のコードワードが最小距離で同順位の場合、ランダムに 1 つを選択します。

    • 対数尤度比 (LLR) — 各受信信号について、0 ビットを送信する確率と 1 ビットを送信する確率の比の対数を取ることによって LLR を計算します。LLR 値を使用して、各ビットについて最も可能性の高い送信シンボルを決定します。

    • 近似対数尤度比 (LLR) — 各ビット位置について、0 に対応する最も近いコンスタレーション点と、1 に対応する最も近いコンスタレーション点を識別します。識別された最も近いコンスタレーション点に基づいて、受信信号の各ビットに対して LLR を計算します。

判定方法の詳細については、硬判定復調と軟判定復調を参照してください。

拡張機能

すべて展開する

バージョン履歴

R2012a で導入