Main Content

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

apskmod

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

説明

y = apskmod(x,M,radii) は、PSK リングあたりの指定されたコンスタレーション点の数 M および各 PSK リングの半径 radii に基づいて入力データ x の APSK 変調を実行します。APSK 変調の詳細については、アルゴリズムを参照してください。

メモ

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

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

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

すべて折りたたむ

各円のコンスタレーション点の数が等しくない APSK を使用してデータを変調します。

変調次数と PSK リングの半径のベクトルを定義します。コンスタレーション点のデータを生成します。

M = [4 8 20];
radii = [0.3 0.7 1.2];
modOrder = sum(M);
x = 0:modOrder-1;

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

y = apskmod(x,M,radii);

結果のコンスタレーションを、散布図を使用してプロットします。

scatterplot(y)

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.

内円の位相オフセットが 0、外円の位相オフセットが pi/6 の APSK を使用してランダム データ シーケンスを変調します。

変調次数、PSK リングの半径、および PSK リングの位相オフセットのベクトルを定義します。ランダム データを生成します。

M = [8 8];
modOrder = sum(M);
radii = [0.5 1];
phOff = [0 pi/6];

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

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

y = apskmod(x,M,radii,phOff);

散布図を使用して結果のコンスタレーションをプロットし、コンスタレーション円の間の位相オフセットを観察します。

scatterplot(y)

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.

グレイ符号化およびカスタム符号化の各シンボル マッピングの APSK コンスタレーションをプロットします。

変調次数と PSK リングの半径のベクトルを定義します。コンスタレーション点のビット データを生成します。

M = [8 8];
modOrder = sum(M);
radii = [0.5 1.5];
x = 0:modOrder-1;

関数apskmodでは、単一チャネル バイナリ入力が左 MSB 揃えで、指定された列方向であることを前提としています。関数int2bitを使用して、整数入力シンボルを単一列のバイナリ ベクトルとして表現します。

xBit = int2bit(x,log2(modOrder));

既定の位相オフセットを使用して APSK 変調をデータに適用します。M の要素の値は等しく、位相オフセットの要素の値は等しいため、シンボル マッピングは既定で 'gray' に設定されます。バイナリ入力を使用してコンスタレーションをプロットし、コンスタレーション マッピングのグレイ符号部分を強調表示します。

y = apskmod(xBit,M,radii,PlotConstellation=true,InputType='bit');

Figure contains an axes object. The axes object with title 16-APSK with Gray Mapping, xlabel In-phase Amplitude, ylabel Quadrature Amplitude contains 19 objects of type line, text. One or more of the lines displays its values using only markers

カスタム符号のシンボル マッピング ベクトルを作成します。このカスタム マッピングは、別のグレイ符号マッピングになります。

cmap = [0;1;9;8;12;13;5;4;2;3;11;10;14;15;7;6];

カスタム符号のシンボル マッピングで APSK 変調を適用します。バイナリ入力を使用してコンスタレーションをプロットし、異なるグレイ符号シンボル マッピングがカスタム マッピングによって定義されていることを強調表示します。

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

Figure contains an axes object. The axes object with title 16-APSK with Custom Mapping, xlabel In-phase Amplitude, ylabel Quadrature Amplitude contains 19 objects of type line, text. One or more of the lines displays its values using only markers

APSK と出力データ型 single を使用してランダム ビット シーケンスを変調します。信号をノイズの多いチャネルを通して渡して、コンスタレーション ダイアグラムを表示します。

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

M = [8 12 20 24];
radii = [0.8 1.2 2 2.5];
bitsPerSym = log2(sum(M));

x = randi([0 1],2000*bitsPerSym,1);

APSK 変調をデータに適用し、名前と値のペアを使用してデータ型 single として出力します。

y = apskmod(x,M,radii,'InputType','bit','OutputDataType','single');

25 dB SNR の AWGN チャネルを通して渡します。

yrec = awgn(y,25,'measured');

受信コンスタレーションを散布図としてプロットします。

scatterplot(yrec)

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.

入力引数

すべて折りたたむ

入力信号。スカラー、ベクトルまたは行列として指定します。x の要素は、バイナリ値または [0, (sum(M)-1)] の範囲の整数でなければなりません。

メモ

入力信号をバイナリの要素として処理するには、'InputType' の名前と値のペアを 'bit' に設定します。バイナリ入力の場合、行数は log2(sum(M)) の整数倍でなければなりません。列の log2(sum(M)) ビットのグループがシンボルにマッピングされます。ここで、最初のビットは MSB を表し、最後のビットは LSB を表します。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

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

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

データ型: double

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

例: [0.5 1 2] は、3 つのコンスタレーション 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 は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

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

例: y = apskmod(x,M,radii,'InputType','bit','OutputDataType','single');

シンボル マッピング。'SymbolMapping' と次のいずれかで構成されるコンマ区切りのペアとして指定します。

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

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

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

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

データ型: double | char | string

入力タイプ。'InputType' と次のいずれかのオプションで構成されるコンマ区切りのペアとして指定します。

  • 'integer' –– 入力信号は [0, (sum(M) – 1)] の範囲の整数で構成されなければなりません。

  • 'bit' –– 入力信号はバイナリ値を含まなければならず、行数は log2(sum(M)) の整数倍でなければなりません。バイナリ入力信号は左 MSB 揃えで、指定された列方向であるものと見なされます。列の log2(sum(M)) ビットのグループがシンボルにマッピングされます。ここで、最初のビットは MSB を表し、最後のビットは LSB を表します。

データ型: char | string

出力データ型。'OutputDataType''double' または 'single' のどちらかで構成されるコンマ区切りのペアとして指定します。

データ型: char | string

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

データ型: logical

出力引数

すべて折りたたむ

APSK 変調された信号。複素数のスカラー、ベクトルまたは行列として返されます。y の次元は、指定した 'InputType' 値によって異なります。

InputTypey の次元
'integer'y の次元は入力 x と同じになります。
'bit'y の行数は log2(sum(M)) で除算した x の行数と等しくなります。

アルゴリズム

関数は、純粋な APSK コンスタレーションを実装します。

純粋な M-APSK コンスタレーションは、それぞれが一定の間隔の PSK 点をもつ NC 個の同心円状のリングまたは等高線で構成されます。M-APSK コンスタレーション セットは次のようになります。

χ={R1exp(j(2πM1i+ϕ1)),i=0,,M11,R2exp(j(2πM2i+ϕ2)),i=0,,M21,RNCexp(j(2πMNCi+ϕNc)),i=0,,MNC1,

ここで、

  • 変調次数は、l = 1, 2, ... , NC とするすべての Ml の和と等しくなります。

  • NC は同心円状のリングの数です。NC ≥ 2。

  • Ml は l 番目のリングのコンスタレーション点の数です。

  • Rl は l 番目のリングの半径です。

  • ϕl は l 番目のリングの位相オフセットです。

  • j=1

参照

[1] Corazza, Giovanni E. Digital Satellite Communications. New York: Springer Science Business Media, LLC, 2007.

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