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

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 This object represents Channel 1.

関数 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 次元配列として指定します。メッセージ信号は 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

拡張機能

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

バージョン履歴

R2006a より前に導入