メインコンテンツ

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

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

例: 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'各ビットの近似対数尤度比の値

アルゴリズム

すべて折りたたむ

参照

[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 で導入