メインコンテンツ

genqammod

一般的な直交振幅変調 (QAM)

説明

Y = genqammod(X,const) は、メッセージ信号 X の QAM の複素エンベロープを返します。入力 const は変調の信号マッピングを指定します。

Y = genqammod(X,const,InputType=inType) は、さらにメッセージ信号の入力タイプを指定します。

すべて折りたたむ

ガウス ノイズが存在する場合は非矩形の 16 配列コンスタレーションを使用してデータの送受信を行います。ノイズを含むコンスタレーションの散布図を表示し、2 つの異なる SNR についてシンボル エラー レート (SER) を見積もります。

電話回線モデムに対し、V.29 規格に基づいて 16-QAM コンスタレーションを作成します。

c = [-5 -5i 5 5i -3 -3-3i -3i 3-3i 3 3+3i 3i -3+3i -1 -1i 1 1i];
sigpower = pow2db(mean(abs(c).^2));
M = length(c);

ランダムなシンボルを生成します。

data = randi([0 M-1],2000,1);

関数 genqammod を使用してデータを変調します。カスタム コンスタレーションは矩形ではないため、一般的な QAM 変調が必要です。

modData = genqammod(data,c);

SNR が 20 dB の AWGN チャネル経由で信号を渡します。

rxSig = awgn(modData,20,sigpower);

受信信号と基準コンスタレーション c の散布図を表示します。

h = scatterplot(rxSig);
hold on
scatterplot(c,[],[],'r*',h)
grid
hold off

Constellation diagram scatter plot of the reference signal and the modulated signal passed through an awgn channel.

関数 genqamdemod を使用して、受信した信号を復調します。シンボル エラー数と SER を求めます。

demodData = genqamdemod(rxSig,c);
[numErrors,ser] = symerr(data,demodData)
numErrors = 
4
ser = 
0.0020

SNR が 10 dB の AWGN チャネル経由で送信と復調の処理を繰り返します。低減された SNR について SER を判別します。予想どおり、SNR が低下するとパフォーマンスも低下します。

rxSig = awgn(modData,10,sigpower);
demodData = genqamdemod(rxSig,c);
[numErrors,ser] = symerr(data,demodData)
numErrors = 
457
ser = 
0.2285

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

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

入力引数

すべて折りたたむ

メッセージ信号。スカラー、ベクトル、行列、3 次元配列、4 次元配列、dlarray (Deep Learning Toolbox) オブジェクト、または gpuArray オブジェクトとして指定します。詳細については、配列のサポートを参照してください。メッセージ信号は、バイナリ値であるか、[0,length(const) – 1] の範囲の整数で構成されなければなりません。X が複数の行をもつ行列の場合、この関数は列を個別に処理します。

データ型: double | single | fi | int8 | int16 | uint8 | uint16

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

データ型: double | single | fi | int8 | int16 | uint8 | uint16
複素数のサポート: あり

入力タイプ。次のいずれかのオプションとして指定します。

  • "integer" — メッセージ信号は [0, M-1] の範囲の整数です。ここで、M はコンスタレーションの長さです。

  • "bit" — メッセージ信号は 01 の値を含むバイナリです。この場合、行数は log2(M) の整数倍でなければなりません。この関数は、log2(M) ビットのグループをシンボルにマッピングします。最初のビットは最上位ビット (MSB) を表し、最後のビットは最下位ビット (LSB) を表します。

出力引数

すべて折りたたむ

複素エンベロープ。スカラー、ベクトル、行列、3 次元配列、4 次元配列、dlarray オブジェクト、または gpuArray オブジェクトとして返されます。

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

整数入力の場合、出力 Y の次元は入力信号 X と同じになります。ビット入力の場合、Y の行数は X の行数を log2(M) で除算した値になります。

データ型: double | single | fi | int8 | int16 | uint8 | uint16
複素数のサポート: あり

詳細

すべて折りたたむ

拡張機能

すべて展開する

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

バージョン履歴

R2006a より前に導入

すべて展開する