Main Content

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

genqammod

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

説明

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

すべて折りたたむ

ガウス ノイズが存在する場合は非矩形の 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

関数 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);

入力データのシンボルを生成します。このコンスタレーションを使用してシンボルを変調します。

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;

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

numErrs = symerr(x,z)
numErrs = 0

入力引数

すべて折りたたむ

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

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

信号マッピング。複素数ベクトルとして指定します。

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

出力引数

すべて折りたたむ

複素エンベロープ。数値のスカラー、ベクトル、行列または 3 次元配列として返されます。Y の長さは入力 X の長さと同じです。

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

詳細

すべて折りたたむ

配列のサポート

関数 genqammod は、数値配列、dlarray (Deep Learning Toolbox)、または gpuArray (Parallel Computing Toolbox) で表された入力信号をサポートします。dlarraygpuArray の組み合わせとして入力を指定した場合、返される行列は GPU の dlarray オブジェクトになります。

バッチ観測値の数 (NB) はオプションの次元で、サポートされているどのデータ タイプであってもこの入力に追加することができます。

  • X — 入力データには 3 次元配列を使用できます。その場合、NSym×NChan×NB として指定します。

NSym はシンボルの数です。NChan はチャネルの数です。

dlarray オブジェクトをサポートする Communications Toolbox™ 機能の一覧については、無線用 AIを参照してください。

拡張機能

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

バージョン履歴

R2006a より前に導入

すべて展開する