Main Content

comm.GeneralQAMDemodulator

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

説明

GeneralQAMDemodulator オブジェクトは、直交振幅変調を使用して変調された信号を復調します。入力は、変調信号のベースバンド表現です。

直交振幅変調を使用して変調された信号を復調するには、以下の手順に従います。

  1. QAM 復調器オブジェクトを定義および設定します。構築を参照してください。

  2. step を呼び出して、comm.GeneralQAMModulator のプロパティに従い、信号を復調します。step の動作は、ツールボックスの各オブジェクト固有のものです。

メモ

R2016b 以降では、step メソッドを使用して、System object™ によって定義された演算を実行する代わりに、引数を関数であるかのように使ってオブジェクトを呼び出すことができます。たとえば、y = step(obj,x)y = obj(x) は同等の演算を実行します。

構築

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

H = comm.GeneralQAMDemodulator(Name,Value) は、指定の各プロパティが指定の値に設定された一般的な QAM 復調器オブジェクト H を作成します。(Name1,Value1,...,NameN,ValueN) のように、追加の名前と値のペアの引数を任意の順番で指定できます。

H = comm.GeneralQAMDemodulator(CONST,Name,Value) は、一般的な QAM 復調器オブジェクト H を作成します。このオブジェクトは、Constellation プロパティを CONST に設定し、指定の他のプロパティは指定の値に設定しています。

プロパティ

Constellation

コンスタレーション

コンスタレーション点を実数または複素数の倍精度データ型ベクトルとして指定します。既定の設定は exp(2×π×1i×(0:7)8) です。ベクトルの長さが変調次数を決定します。

BitOutput プロパティを false に設定すると、step メソッドは整数値のベクトルを出力します。これらの整数の範囲は 0 から M–1 までであり、M はこのプロパティ ベクトルの長さです。出力ベクトルの長さは、入力信号の長さと同じです。

BitOutput プロパティを true に設定するとき、出力信号にはビットが含まれます。ビット出力に対して、コンスタレーションのサイズは 2 のべき乗の整数を必要とし、出力長はシンボルあたりのビット数の整数倍です。

BitOutput

ビットとしての出力データ

出力がビットのグループまたは整数シンボル値で構成されているかどうかを指定します。既定の設定は false です。

このプロパティを true に設定すると、step メソッドは log2(M) と復調シンボル数との積に等しい長さのビット値の列ベクトルを出力します。ここで、M は Constellation プロパティで指定されたコンスタレーションの長さです。長さ M は変調次数を決定します。

このプロパティを false に設定すると、step メソッドは入力データ ベクトルと同じ長さの列ベクトルを出力します。ベクトルには、0 から M–1 の範囲にある整数シンボル値が含まれます。

DecisionMethod

復調判定メソッド

オブジェクトが使用する判定方法を、Hard decisionLog-likelihood ratio または Approximate log-likelihood ratio のいずれかとして指定します。既定の設定は Hard decision です。BitOutput プロパティを false に設定すると、オブジェクトは常に硬判定復調を実行します。このプロパティは、BitOutput プロパティを true に設定した場合に適用されます。

VarianceSource

ノイズ分散のソース

ノイズ分散のソースを、Property または Input port のいずれかとして指定します。既定の設定は Property です。このプロパティは、DecisionMethod プロパティを Log-likelihood ratio または Approximate log-likelihood ratio に設定した場合に適用されます。

Variance

ノイズ分散

ノイズの分散を非ゼロの実数スカラー値として指定します。既定の設定は 1 です。

LLR アルゴリズムには、有限の精度で極度に大きいまたは小さい数値を扱う指数計算が含まれるため、次のような結果が得られます。

  • 分散が極度に大きい場合は、Inf から -Inf

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

このような場合は、指数計算を含まないアルゴリズムである近似 LLR を使用します。

このプロパティは、VarianceSource プロパティを Property に設定した場合に適用されます。固定小数点の入力に対して、このプロパティを調整することはできません。

ヒント

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

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

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

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

OutputDataType

出力のデータ型

出力データ型を Full precisionSmallest unsigned integerdoublesingleint8uint8int16uint16int32 または uint32 のいずれかに指定します。既定の設定は Full precision です。

このプロパティは、BitOutput プロパティを false に設定する場合、あるいは BitOutput プロパティを true に設定し、かつ DecisionMethod プロパティを Hard decision または Approximate log-likelihood ratio に設定する場合にのみ適用されます。この場合、OutputDataType プロパティを Full precision に設定すると、入力データが単精度または倍精度のデータ型であるときに、出力データ型は入力のデータ型と同じになります。

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

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

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

BitOutput プロパティを true に、DecisionMethod プロパティを Approximate log-likelihood ratio に設定すると、このプロパティは Full precision または Custom にのみ設定できます。

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

 固定小数点プロパティ

メソッド

step任意の QAM コンスタレーションの復調
すべての System object に共通
release

System object のプロパティ値の変更の許可

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

 % Setup a three point constellation
 c = [1 1i -1];
 hQAMMod = comm.GeneralQAMModulator(c);
 hAWGN = comm.AWGNChannel('NoiseMethod', ...
     'Signal to noise ratio (SNR)','SNR',15,'SignalPower',0.89);
 hQAMDemod = comm.GeneralQAMDemodulator(c);

 %Create an error rate calculator
 hError = comm.ErrorRate;
 for counter = 1:100
     % Transmit a 50-symbol frame
     data = randi([0 2],50,1);
     modSignal = step(hQAMMod, data);
     noisySignal = step(hAWGN, modSignal);
     receivedData = step(hQAMDemod, noisySignal);
     errorStats = step(hError, data, receivedData);
 end
 fprintf('Error rate = %f\nNumber of errors = %d\n', ...
      errorStats(1), errorStats(2))

詳細

すべて展開する

アルゴリズム

このオブジェクトは、General QAM Demodulator Baseband ブロックのリファレンス ページで説明されているアルゴリズム、入力、および出力を実装しています。オブジェクト プロパティはブロック パラメーターに対応します。

拡張機能

バージョン履歴

R2012a で導入