メインコンテンツ

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

genqamdemod

一般的な直交振幅復調

説明

z = genqamdemod(y,const) は、const で指定された信号マッピングを使用して、直交振幅変調信号の複素エンベロープ y を復調します。

z = genqamdemod(y,const,Name=Value) は、オプションの名前と値の引数を設定します。

すべて折りたたむ

六角形のコンスタレーションを描く点を作成します。

inphase = [1/2 1 1 1/2 1/2 2 2 5/2];
quadr = [0 1 -1 2 -2 1 -1 0];
inphase = [inphase;-inphase]; inphase = inphase(:);
quadr = [quadr;quadr]; quadr = quadr(:);
const = inphase + 1i*quadr;

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

h = scatterplot(const);

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 = [3 8 5 10 7];
y = genqammod(x,const);

変調した信号 y を復調します。

z = genqamdemod(y,const);

変調した信号を同じ Figure にプロットします。

hold on;
scatterplot(y,1,0,'ro',h);
legend('Constellation','Modulated signal');
hold off;

Figure Scatter Plot contains an axes object. The axes object with title Scatter plot, 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 Constellation, Modulated signal.

復調したデータと元のシーケンスの間のシンボル エラー数を求めます。

numErrs = symerr(x,z)
numErrs = 
0

DVB-S2X のコンスタレーションを使用して、16-APSK 変調のビット単位の近似 LLR を計算します。

長さ 24 のランダムなビット シーケンスを生成します。

x = randi([0 1],24,1);

変調用の 16-APSK コンスタレーション点を定義します。

constellation = [ ...
    0.4718 + 1j*0.2606;  0.2606 + 1j*0.4718; -0.4718 + 1j*0.2606; -0.2606 + 1j*0.4718; ...
    0.4718 - 1j*0.2606;  0.2606 - 1j*0.4718; -0.4718 - 1j*0.2606; -0.2606 - 1j*0.4718; ...
    1.2088 + 1j*0.4984;  0.4984 + 1j*1.2088; -1.2088 + 1j*0.4984; -0.4984 + 1j*1.2088; ...
    1.2088 - 1j*0.4984;  0.4984 - 1j*1.2088; -1.2088 - 1j*0.4984; -0.4984 - 1j*1.2088 ...
];

指定されたコンスタレーションを使用してビット シーケンスを変調します。

y = genqammod(x,constellation,InputType="bit");

変調した信号に加法性ホワイト ガウス ノイズ (AWGN) を追加します。

ynoisy =awgn(x,15);

変調した信号を復調して近似 LLR を計算します。

z = genqamdemod(ynoisy,constellation,OutputType="approxllr",NoiseVariance=0.0316);

入力引数

すべて折りたたむ

複素エンベロープ。スカラー、ベクトル、行列、3 次元配列、4 次元配列、または gpuArray オブジェクトとして指定します。y が複数の行をもつ行列の場合、この関数は行を個別に処理します。

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

信号マッピング。複素数ベクトル、dlarray オブジェクト、または gpuArray オブジェクトとして指定します。

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

名前と値の引数

すべて折りたたむ

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

例: OutputType="integer" は出力形式を "integer" に設定します。

出力形式。次のいずれかのオプションとして指定します。

  • "integer" — 出力 z は整数シンボル値で構成されます。

  • "bit" — 出力 z はビットのグループで構成されます。

  • "approxllr" — 出力 z は、ビット単位の近似対数尤度比 (LLR) で構成されます。

出力のデータ型。"double""single""int8""int16""int32""int64""uint8""uint16""uint32"、または "uint64" として指定します。この名前と値の引数は、最終出力のデータ型を決定します。出力のデータ型は、選択した OutputType の値によって異なります。

  • OutputType"integer" に設定すると、データ型は次のようになります。

    • "double"

    • "single"

    • "int8"

    • "int16"

    • "int32"

    • "int64"

    • "uint8"

    • "uint16"

    • "uint32"

    • "uint64"

  • OutputType"bit" に設定すると、データ型は "double""single"、または "int8" になります。

  • OutputType"approxllr" に設定すると、関数はこの名前と値の引数を無視し、出力データ型は入力データ型と同じままになります。

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

ノイズ分散。正のスカラーまたは正のベクトルとして指定します。スカラーとして指定した場合、この関数は、すべての入力要素に対する LLR の計算で同じノイズ分散値を使用します。ベクトルとして指定する場合、ベクトルの長さは入力信号の最後の次元の要素数と等しくなければなりません。ベクトルの各要素は、対応する最後の次元に沿った入力のすべての要素のノイズ分散を指定します。

依存関係

この名前と値の引数を有効にするには、OutputType"approxllr" に設定します。

出力引数

すべて折りたたむ

メッセージ信号。スカラー、ベクトル、行列、3 次元配列、4 次元配列、または gpuArray オブジェクトとして返されます。メッセージ信号は 0 ~ length(const)–1 の整数で構成されます。z のデータ型は入力 x のデータ型と同じになります。

OutputType"bit" または "approxllr" に設定した場合、出力 z の行数は入力 y の行数の log2(M) 倍になります。この関数は、復調された各シンボルを log2(M) ビットのグループにマッピングします。最初のビットは最上位ビット (MSB) を表し、最後のビットは最下位ビット (LSB) を表します。M は変調次数です。

yconst のいずれかが gpuArray オブジェクトである場合、zgpuArray オブジェクトになります。

データ型: double | single

拡張機能

すべて展開する

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

バージョン履歴

R2006a より前に導入

すべて展開する