Main Content

mil188qamdemod

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

説明

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

Z = mil188qamdemod(Y,M,Name=Value) は、オプションの名前と値の引数を指定します。たとえば、mil188qamdemod(Y,M,PlotConstellation=true) は、変調次数 M を指定し、コンスタレーションをプロットします。名前と値の引数は、他のすべての入力引数の後で指定します。

すべて折りたたむ

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')

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

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);

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

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);

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

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

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

scatterplot(rxSig) 

近似 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 は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: Z = mil188qamdemod(Y,M,OutputType='bit',OutputDataType='single');

出力タイプ。'integer''bit''llr'、または 'approxllr' として指定します。返される出力の説明については、Z を参照してください。

出力のデータ型。この表にリストされているデータ型のいずれかとして指定します。OutputDataType で使用可能な値は、OutputType の値によって異なります。

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

既定値は、入力 Y のデータ型になります。

依存関係

この引数を有効にするには、OutputType'integer' または 'bit' に設定します。そうでない場合、出力のデータ型は入力 Y のデータ型と一致します。

単位平均パワー フラグ。logical の 0 (false) または 1 (true) として指定します。

  • UnitAveragePowertrue の場合、関数は 1 オームを基準とした 1 ワットの平均電力にコンスタレーションをスケーリングします。

  • UnitAveragePowerfalse の場合、関数は[1]で説明されている関連する標準の仕様に基づいてコンスタレーションをスケーリングします。

データ型: logical

ノイズ分散。次のいずれかのオプションとして指定します。

  • 正のスカラー — 関数はすべての入力要素で同じノイズ分散値を使用します。

  • 正の値のベクトル — 対応する最後の次元に沿った入力のすべての要素で、関数はベクトルの各要素によって指定されたノイズ分散を使用します。ベクトルの長さは入力信号の列数に等しくなければなりません。

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

依存関係

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

データ型: double

コンスタレーションをプロットするためのオプション。logical 0 (false) または logical 1 (true) として指定します。コンスタレーションをプロットするには、PlotConstellationtrue に設定します。

データ型: logical

出力引数

すべて折りたたむ

復調した信号。スカラー、ベクトルまたは行列として返されます。この出力の値と次元は、次の表に示すように、指定した 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 で導入