このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
apskdemod
振幅位相シフト キーイング (APSK) 復調
説明
では、APSK 変調された信号の各 PSK リングの初期位相オフセットを指定します。z
= apskdemod(y
,M
,radii
,phaseoffset
)
では、1 つ以上の名前と値のペアの引数を使用して、前述の構文のいずれかで使用するオプションを指定します。たとえば、z
= apskdemod(___,Name,Value
)'OutputDataType','double'
では目的の出力データ型を double として指定します。名前と値のペアの引数は、他のすべての入力引数の後で指定します。
例
16-APSK 信号の復調
各円のコンスタレーション点の数が等しくない 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')
受信信号を復調し、入力データと比較します。
z = apskdemod(rxSig,M,radii); isequal(x,z)
ans = logical
1
64-APSK カスタム シンボル マッピングされた信号の復調
カスタム シンボル マッピングされた 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);
受信信号を復調します。
z = apskdemod(y,M,radii,'SymbolMapping',cmap,'OutputType','bit');
復調された信号が元のデータと等しいことを検証します。
isequal(x,z)
ans = logical
1
32-APSK 信号の軟ビット復調
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);
入力引数
y
— APSK 変調された信号
スカラー | ベクトル | 行列
APSK 変調された信号。複素数のスカラー、ベクトルまたは行列として指定します。各列が独立したチャネルとして扱われます。
データ型: double
| single
複素数のサポート: あり
M
— PSK リングあたりのコンスタレーション点
ベクトル
PSK リングあたりのコンスタレーション点。複数の要素をもつベクトルとして指定します。ベクトルの要素は、各 PSK リングのコンスタレーション点の数を示します。最初の要素は最も内部の円に対応し、最も外側の円に対応する最後の要素まで同様です。要素の値は 4 の倍数でなければならず、sum(
は 2 のべき乗でなければなりません。変調次数は信号コンスタレーション点の合計数であり、ベクトル要素 M
)sum(
の合計と等しくなります。M
)
例: [4 12 16]
は、変調次数が sum(M)
= 32 の 3 つの PSK リング コンスタレーションを指定します。
データ型: double
radii
— PSK リングの半径
ベクトル
PSK リングの半径。M
と同じ長さをもつベクトルとして指定します。最初の要素は最も内部の円に対応し、最も外側の円に対応する最後の要素まで同様です。要素は正で、昇順に並んでいなければなりません。
例: [0.5 1 2]
では、コンスタレーション PSK リングの半径を定義します。内側のリングは半径 0.5、2 番目のリングは半径 1.0、外側のリングは半径 2.0 をもちます。
データ型: double
phaseoffset
— PSK リングの位相オフセット
[pi/M(1) pi/M(2) … pi/M(end)]
(既定値) | スカラー | ベクトル
各 PSK リングの位相オフセット (ラジアン)。M
と同じ長さをもつベクトルまたはスカラーとして指定します。最初の要素は最も内部の円に対応し、最も外側の円に対応する最後の要素まで同様です。phaseoffset
をスカラーにできるのは、M
のすべての要素が同じ値である場合だけです。
例: [pi/4 pi/12 pi/16]
では、3 つのコンスタレーション PSK リングの位相オフセットを定義しています。内側のリングは位相オフセット pi/4、2 番目のリングは位相オフセット pi/12、外側のリングは位相オフセット pi/16 をもちます。
データ型: double
名前と値の引数
例: y = apskdemod(x,M,radii,'OutputType','bit','OutputDataType','single');
オプションの引数 Name,Value
のコンマ区切りペアを指定します。Name
は引数名で、Value
は対応する値です。Name
は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN
のように、複数の名前と値のペアの引数を、任意の順番で指定できます。
SymbolMapping
— シンボル マッピング
'gray'
| 'contourwise-gray'
| 整数ベクトル
シンボル マッピング。SymbolMapping
と次のいずれかで構成されるコンマ区切りのペアとして指定します。
'contourwise-gray'
— 位相次元における等高線を基準としたグレイ マッピングを使用します。'gray'
— 振幅および位相の両方の次元における等高線を基準としたグレイ マッピングを使用します。グレイ シンボル マッピングでは、M
のすべての値が等しくなければならず、phaseoffset
のすべての値が等しくなければなりません。使用されるグレイ マッピングの説明については、[2]を参照してください。整数ベクトル — カスタム シンボル マッピングを使用します。ベクトルは、0 ~ (
sum(
) の値をもつM
)-1sum(
個の一意の要素で構成されなければなりません。最初の要素は最も内部の円の最初の四分円のコンスタレーション点に対応し、続く要素は PSK リングを中心に反時計回りに位置します。M
)
既定のシンボル マッピングは、M
と phaseOffset
によって異なります。M
と phaseOffset
のすべての要素が等しい場合、既定の設定は 'gray'
です。これ以外の場合は既定の設定は 'contourwise-gray'
です。
データ型: double
| char
| string
OutputType
— 出力タイプ
'integer'
(既定値) | 'bit'
| 'llr'
| 'approxllr'
出力タイプ。'OutputType'
と、'integer'
、'bit'
、'llr'
または 'approxllr'
から成るコンマ区切りのペアとして指定します。返される出力の説明については、z
を参照してください。
データ型: char
| string
OutputDataType
— 出力データ型
'double'
(既定値) | ...
出力データ型。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
NoiseVariance
— ノイズ分散
1
(既定値) | 正のスカラー | 正の値のベクトル
ノイズ分散。NoiseVariance
と正のスカラー値または正のベクトル値で構成されるコンマ区切りのペアとして指定します。
スカラーとして指定する場合、同じノイズ分散値がすべての入力要素で使用されます。
ベクトルとして指定する場合、ベクトルの長さは入力信号の列数に等しくなければなりません。
ノイズ分散または信号強度の計算結果に極端な正または負の振幅が含まれる場合は、アルゴリズム選択の考慮事項について、APSK 軟復調を参照してください。
依存関係
この名前と値のペアの引数が適用されるのは、OutputType
が 'llr'
または 'approxllr'
に設定されているときだけです。
データ型: double
PlotConstellation
— コンスタレーションをプロットするためのオプション
false
(既定値) | true
コンスタレーションをプロットするためのオプション。'PlotConstellation'
と論理スカラーとで構成されるコンマ区切りペアで指定します。コンスタレーションをプロットするには、PlotConstellation
を true
に設定します。
データ型: logical
出力引数
z
— 復調した信号
スカラー | ベクトル | 行列
復調した信号。スカラー、ベクトルまたは行列として返されます。z
の次元は、指定した OutputType
値によって異なります。
詳細
APSK 硬復調
APSK 軟復調
軟復調では、2 つの軟判定対数尤度比 (LLR) アルゴリズム (厳密な LLR と近似 LLR) を使用できます。次の表では、これらのアルゴリズムを比較しています。
アルゴリズム | 精度 | 実行速度 |
---|---|---|
厳密な LLR | 精度が高い | 実行が遅い |
近似 LLR | 精度が低い | 実行が速い |
各アルゴリズムの詳細については、厳密な LLR アルゴリズムおよび近似 LLR アルゴリズムを参照してください。
メモ
厳密な LLR アルゴリズムは有限の精度演算で指数を計算します。非常に大きな正または負の振幅による指数の計算では、以下が得られることがあります。
ノイズ分散が極度に大きい値の場合は、
Inf
または-Inf
ノイズ分散および信号強度の両方が極度に小さい値である場合は、
NaN
出力でこれらの値のいずれかが返される場合は、近似 LLR アルゴリズムの使用を試してください。このアルゴリズムでは指数が計算されないためです。
参照
[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++ コードを生成します。
バージョン履歴
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)