Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

mil188qamdemod

MIL-STD-188-110 B/C 標準固有の直交振幅復調

説明

z = mil188qamdemod(y,M) は、MIL-STD-188-110 と変調次数 M に従って変調された、入力信号 y で QAM 復調を実行します。MIL-STD-188-110 QAM 復調の詳細については、MIL-STD-188-110 QAM 硬復調およびMIL-STD-188-110 QAM 軟復調を参照してください。

z = mil188qamdemod(y,M,Name,Value) では、1 つ以上の名前と値のペアの引数を使用してオプションを指定します。たとえば、'OutputDataType','double' では目的の出力データ型を double として指定します。名前と値のペアの引数は、他のすべての入力引数の後で指定します。

すべて折りたたむ

MIL-STD-188-110B で指定されているとおりに変調された 16-QAM 信号を復調します。受信コンスタレーションをプロットし、出力が入力と一致することを確認します。

変調次数を設定してランダム データを生成します。

M = 16;
numSym = 20000;
x = randi([0 M-1],numSym,1);

データを変調し、ノイズの多いチャネルを介して渡します。

txSig = mil188qammod(x,M);
rxSig = awgn(txSig,25,'measured');

送信された信号および受信された信号をプロットします。

plot(rxSig,'b*')
hold on; grid
plot(txSig,'r*')
xlim([-1.5 1.5]);
ylim([-1.5 1.5])
xlabel('In-Phase')
ylabel('Quadrature')
legend('Received constellation','Reference constellation')

Figure contains an axes object. The axes object with xlabel In-Phase, ylabel Quadrature contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent Received constellation, Reference constellation.

受信信号を復調します。復調されたデータと元のデータを比較します。

z = mil188qamdemod(rxSig,M);
isequal(x,z)
ans = logical
   1

MIL-STD-188-110C で指定されているとおりに変調された 64-QAM 信号を復調します。硬判定ビット出力を計算し、出力が入力と一致することを確認します。

変調次数を設定してランダム ビット データを生成します。

M = 64;
numBitsPerSym = log2(M);
x = randi([0 1],1000*numBitsPerSym,1);

データを変調します。名前と値のペアを使用して、ビット入力データを指定し、コンスタレーションをプロットします。

txSig = mil188qammod(x,M,'InputType','bit','PlotConstellation',true);

Figure contains an axes object. The axes object with title MIL188 64-QAM , UnitAveragePower=false, xlabel In-phase Amplitude, ylabel Quadrature Amplitude contains 67 objects of type line, text. One or more of the lines displays its values using only markers

受信信号を復調します。復調されたデータと元のデータを比較します。

z = mil188qamdemod(txSig,M,'OutputType','bit');
isequal(z,x)
ans = logical
   1

32-QAM 信号を復調して、軟ビットを計算します。

変調次数を設定し、ランダム ビット シーケンスを生成します。

M = 32;
numSym = 20000;
numBitsPerSym = log2(M);
x = randi([0 1], numSym*numBitsPerSym,1);

データを変調します。名前と値のペアを使用して、ビット入力データと単位平均パワーを指定し、コンスタレーションをプロットします。

txSig = mil188qammod(x,M,'InputType','bit','UnitAveragePower',true, ...
    'PlotConstellation',true);

Figure contains an axes object. The axes object with title MIL188 32-QAM , UnitAveragePower=true, xlabel In-phase Amplitude, ylabel Quadrature Amplitude contains 35 objects of type line, text. One or more of the lines displays its values using only markers

送信されたデータをホワイト ガウス ノイズを介して渡します。

rxSig = awgn(txSig,10,'measured');

散布図を使用してコンスタレーションを表示します。

scatterplot(rxSig) 

Figure Scatter Plot contains an axes object. The axes object with title Scatter plot, xlabel In-Phase, ylabel Quadrature contains a line object which displays its values using only markers. This object represents Channel 1.

近似 LLR アルゴリズムを使用して軟ビットを計算し、信号を復調します。

z = mil188qamdemod(rxSig,M,'OutputType','approxllr', ...
     'NoiseVariance',10^(-1));

入力引数

すべて折りたたむ

変調した信号。複素数のスカラー、ベクトルまたは行列として指定します。y が行列の場合、各列が個別のチャネルとして扱われます。

y は MIL-STD-188-110[1]に従って変調されていなければなりません。

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

変調次数。2 のべき乗として指定します。変調次数は信号コンスタレーション点の合計数を指定します。

例: 16

データ型: double

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: y = mil188qamdemod(x,M,'OutputType','bit','OutputDataType','single');

出力タイプ。OutputType と、'integer''bit''llr' または 'approxllr' から成るコンマ区切りのペアとして指定します。

データ型: char | string

出力データ型。OutputDataType と指定されたデータ型のいずれかで構成されるコンマ区切りのペアとして指定します。OutputDataType で使用可能な値は、OutputType の値によって異なります。

OutputType の値使用可能な OutputDataType の値
'integer''double''single''int8''int16''int32''uint8''uint16' または 'uint32'
'bit''double''single''int8''int16''int32''uint8''uint16''uint32' または 'logical'

依存関係

この名前と値のペアの引数が適用されるのは、OutputType'integer' または 'bit' に設定されているときだけです。

データ型: char | string

単位平均パワー フラグ。UnitAveragePower と logical スカラーとで構成されるコンマ区切りペアとして指定します。このフラグが true の場合、関数は 1 オームを基準とした 1 ワットの平均電力にコンスタレーションをスケーリングします。このフラグが false の場合、関数は[1]で説明されている関連する標準の仕様に基づいてコンスタレーションをスケーリングします。

データ型: logical

ノイズ分散。NoiseVariance と正のスカラー値または正のベクトル値で構成されるコンマ区切りのペアとして指定します。

  • スカラーとして指定する場合、同じノイズ分散値がすべての入力要素で使用されます。

  • ベクトルとして指定する場合、ベクトルの長さは入力信号の列数に等しくなければなりません。

ノイズ分散または信号強度の計算結果に極端な正または負の振幅が含まれる場合は、アルゴリズム選択の考慮事項について、MIL-STD-188-110 QAM 軟復調を参照してください。

依存関係

この名前と値のペアの引数が適用されるのは、OutputType'llr' または 'approxllr' に設定されているときだけです。

データ型: double

コンスタレーションをプロットするためのオプション。'PlotConstellation' と logical スカラーとで構成されるコンマ区切りペアで指定します。コンスタレーションをプロットするには、PlotConstellationtrue に設定します。

データ型: logical

出力引数

すべて折りたたむ

復調した信号。スカラー、ベクトルまたは行列として返されます。z の次元は、指定した OutputType 値によって異なります。

OutputType の値mil188qamdemod の戻り値z の次元
'integer'復調された 0 ~ (M – 1) の整数値z の次元は入力 y と同じになります。
'bit'復調されたビットz の行数は、y の行数の log2(sum(M)) 倍になります。復調された各シンボルは列の log2(sum(M)) 要素のグループにマッピングされます。ここで、最初の要素は MSB を表し、最後の要素は LSB を表します。
'llr'各ビットの対数尤度比の値
'approxllr'各ビットの近似対数尤度比の値

詳細

すべて折りたたむ

MIL-STD-188-110 QAM 硬復調

硬復調アルゴリズムでは、最適な判定の領域ベースの復調を使用します。すべてのコンスタレーション点は確率が等しいため、最大事後確率 (MAP) 検出は最尤 (ML) 検出まで減少します。ML 検出規則は、受信シンボルに最も近いコンスタレーション点を選択することと同等です。各コンスタレーション点の判定領域は、隣接する点の間に垂直二等分線を描画することで設計されます。受信シンボルは、それが存在する判定領域に基づいて、適切なコンスタレーション点にマッピングされます。

すべての MIL-STD コンスタレーションは象限を中心として対称であるため、各シンボルについて最適な判定の領域ベース復調は次のように行われます。

  • 受信シンボルを第 1 象限にマッピングする

  • シンボルの判定領域を選択する

  • 受信シンボルの実数部と虚数部の符号を使用してコンスタレーション点をその元の象限にマッピングし直す

MIL-STD-188-110 QAM 軟復調

軟復調では、2 つの軟判定対数尤度比 (LLR) アルゴリズム (厳密な LLR と近似 LLR) を使用できます。厳密な LLR アルゴリズムは近似 LLR アルゴリズムよりも正確ですが実行速度が遅くなります。各アルゴリズムの詳細については、硬判定復調と軟判定復調のトピックを参照してください。

メモ

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

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

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

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

参照

[1] MIL-STD-188-110B & C: "Interoperability and Performance Standards for Data Modems." Department of Defense Interface Standard, USA.

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2018a で導入