メインコンテンツ

apskdemod

振幅位相偏移変調 (APSK) 復調

説明

Z = apskdemod(Y,M,radii) は、PSK リングあたりの指定されたコンスタレーション点の数 M および各 PSK リングの半径 radii に基づいて入力信号 Y の APSK 復調を実行します。APSK 復調の詳細については、APSK 硬復調およびAPSK 軟復調を参照してください。

メモ

apskdemod は、具体的には複数リング PSK コンスタレーションに適用されます。単一リング PSK コンスタレーションには、pskdemod を使用します。

Z = apskdemod(Y,M,radii,phaseoffset) では、APSK 変調された信号の各 PSK リングの初期位相オフセットを指定します。

Z = apskdemod(___,Name=Value) は、前述の構文のいずれかを使用してオプションの名前と値の引数を指定します。たとえば、apskdemod(Y,M,PlotConstellation=true) は、入力ベクトル M で指定されたリングごとにコンスタレーション点を使用して復調し、コンスタレーションをプロットします。名前と値の引数は、他のすべての入力引数の後で指定します。

すべて折りたたむ

各円のコンスタレーション点の数が等しくない 16-APSK 信号を復調します。受信コンスタレーションをプロットします。

変調次数と PSK リングの半径のベクトルを定義します。ランダムな 16 値データ シンボルを生成します。

M = [4 12];
radii = [1 2];
modOrder = sum(M);

x = randi([0 modOrder-1],1000,1);

データに APSK 変調を適用します。

txSig = apskmod(x,M,radii);

変調された信号をノイズの多いチャネルから渡します。

snr = 20; % dB
rxSig = awgn(txSig,snr,'measured');

送信された (基準) 信号点とノイズの多い受信信号点をプロットします。

plot(rxSig,'b*')
hold on
grid
plot(txSig,'r+')
xlim([-3 3])
ylim([-3 3])
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 = apskdemod(rxSig,M,radii);
isequal(x,z)
ans = logical
   0

カスタム シンボル マッピングされた 64-APSK 信号を復調します。硬判定ビット出力を計算し、入力が出力と一致することを確認します。

変調次数と PSK リングの半径のベクトルを定義します。ランダムなビット入力の 100 シンボルを生成します。

M = [8 12 16 28]; % 4-PSK circles
modOrder = sum(M);
radii = [0.5 1 1.3 2];
x = randi([0 1],100*log2(modOrder),1);

バイナリ マッピングのカスタム シンボル マッピング ベクトルを作成します。

cmap = 0:63; 

データを変調し、コンスタレーションをプロットします。

y = apskmod(x,M,radii, ...
        SymbolMapping=cmap, ...
        InputType='bit', ...
        PlotConstellation=true);

This is the constellation diagram plot for the modulated 64-APSK custom symbol mapped symbol. The X-axis represents the in-phase Amplitude, and the Y-axis represents the quadrature Amplitude.

受信信号を復調します。

z = apskdemod(y,M,radii,SymbolMapping=cmap,OutputType='bit');

復調された信号が元のデータと等しいことを検証します。

isequal(x,z)
ans = logical
   1

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

変調次数と PSK リングの半径のベクトルを定義します。ランダムなビット データのシンボルを 10000 個生成します。

M = [16 16];
modOrder = sum(M);
radii = [0.6 1.2];
numSym = 10000;
x = randi([0 1], numSym*log2(modOrder),1);

基準コンスタレーションを生成します。constellation diagram オブジェクトを作成します。

refAPSK = apskmod(0:modOrder-1,M,radii);
constDiagAPSK = comm.ConstellationDiagram( ...
    ReferenceConstellation=refAPSK, ...
    Title='Received Symbols', ...
    XLimits=[-2 2], ...
    YLimits=[-2 2]);

データを変調します。

txSig = apskmod(x,M,radii,InputType='bit');
sigPow = var(txSig);

ノイズの多いチャネルを通して信号を渡します。

snr = 15;
rxSig = awgn(txSig,snr,sigPow,'linear');

基準および受信コンスタレーション シンボルをプロットします。

constDiagAPSK(rxSig)

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

z = apskdemod(rxSig,M,radii, ...
    OutputType='approxllr', ...
    NoiseVariance=sigPow/snr);

入力引数

すべて折りたたむ

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

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

PSK リングあたりのコンスタレーション点。複数の要素をもつ整数ベクトルとして指定します。ベクトルの要素は、各 PSK リングのコンスタレーション点の数を示します。最初の要素は最も内部の円に対応し、最も外側の円に対応する最後の要素まで同様です。要素の値は 4 の倍数でなければならず、sum(M) は 2 のべき乗でなければなりません。変調次数は信号コンスタレーション点の合計数であり、ベクトル要素 sum(M) の合計と等しくなります。

例: [4 12 16] は、変調次数が sum(M) = 32 の 3 つの PSK リング コンスタレーションを指定します。

データ型: double

PSK リングごとの半径。M と同じ長さをもつベクトルとして指定します。最初の要素は最も内部の円に対応し、最も外側の円に対応する最後の要素まで同様です。要素は正で、昇順に並んでいなければなりません。

例: [0.5 1 2] では、コンスタレーション PSK リングの半径を定義します。内側のリングは半径 0.5、2 番目のリングは半径 1.0、外側のリングは半径 2.0 をもちます。

データ型: double

各 PSK リングの位相オフセット (ラジアン)。M と同じ長さをもつベクトルまたはスカラーとして指定します。最初の要素は最も内部の円に対応し、最も外側の円に対応する最後の要素まで同様です。phaseoffset をスカラーにできるのは、M のすべての要素が同じ値である場合だけです。

例: [pi/4 pi/12 pi/16] では、3 つのコンスタレーション PSK リングの位相オフセットを定義しています。内側のリングは位相オフセット pi/4、2 番目のリングは位相オフセット pi/12、外側のリングは位相オフセット pi/16 をもちます。

データ型: double

名前と値の引数

すべて折りたたむ

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

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

シンボル マッピング。次のいずれかを指定します。

  • 'contourwise-gray' — 各 PSK リングで、位相次元における等高線を基準としたグレイ マッピングを使用します。

  • 'gray' — 振幅および位相の両方の次元における等高線を基準としたグレイ マッピングを使用します。グレイ シンボル マッピングでは、M のすべての値が等しくなければならず、phaseoffset のすべての値が等しくなければなりません。使用されるグレイ マッピングの説明については、[2]を参照してください。

  • 整数ベクトル — カスタム シンボル マッピングを使用します。ベクトルは、[0, (sum(M)-1] の範囲の値をもつ sum(M) 個の一意の要素で構成されなければなりません。最初の要素は最も内部の円の最初の四分円のコンスタレーション点に対応し、続く要素は PSK リングを中心に反時計回りに位置します。

既定のシンボル マッピングは、Mphaseoffset によって異なります。MphaseOffset のすべての要素が等しい場合、既定の設定は 'gray' です。これ以外の場合は既定の設定は 'contourwise-gray' です。

データ型: double | char | string

出力タイプ。'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' に設定します。

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

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

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

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

依存関係

この引数は、OutputType'llr' または 'approxllr' に設定した場合に適用されます。

データ型: double

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

データ型: logical

出力引数

すべて折りたたむ

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

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

アルゴリズム

すべて折りたたむ

参照

[1] Sebesta, J. “Efficient Method for APSK Demodulation.” Selected Topics on Applied Mathematics, Circuits, Systems, and Signals (P. Pardalos, N. Mastorakis, V. Mladenov, and Z. Bojkovic, eds.). Vouliagmeni, Athens, Greece: WSEAS Press, 2009.

[2] Liu, Z., Q. Xie, K. Peng, and Z. Yang. "APSK Constellation with Gray Mapping." IEEE Communications Letters. Vol. 15, Number 12, December 2011, pp. 1271–1273.

拡張機能

すべて展開する

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

バージョン履歴

R2018a で導入