Main Content

qammod

説明

y = qammod(x,M) は、変調次数 M が指定された QAM を使用して入力信号 x を変調します。出力 y は変調した信号です。

y = qammod(x,M,symOrder) はシンボル順序を指定します。

y = qammod(___,Name,Value) は、前の構文の入力引数を任意に組み合わせたものと、名前と値のペアの引数を使用して、オプションを指定します。

すべて折りたたむ

QAM を使用してデータを変調し、結果を散布図にプロットします。

変調次数を 16 に設定し、それぞれに予想されるシンボルを含むデータ ベクトルを作成します。

M = 16;
x = (0:M-1)';

関数 qammod を使用してデータを変調します。

y = qammod(x,M);

関数 scatterplot を使用して、変調したコンスタレーションを表示します。

scatterplot(y)

Figure Scatter Plot contains an axes object. The axes object with title Scatter plot contains an object of type line. This object represents Channel 1.

変調次数を 256 に設定して、変調された信号の散布図を表示します。

M = 256;
x = (0:M-1)';
y = qammod(x,M);
scatterplot(y)

Figure Scatter Plot contains an axes object. The axes object with title Scatter plot contains an object of type line. This object represents Channel 1.

QAM を使用してランダム データ シンボルを変調します。平均信号強度が 1 W になるように変調器出力を正規化します。

変調次数を設定してランダム データを生成します。

M = 64;
x = randi([0 M-1],1000,1);

データを変調します。'UnitAveragePower' の名前と値のペアを使用し、平均信号パワーが 1 W になるように出力信号を設定します。

y = qammod(x,M,'UnitAveragePower',true);

信号が単位平均パワーをもつことを確認します。

avgPower = mean(abs(y).^2)
avgPower = 1.0070

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

scatterplot(y)
title('64-QAM, Average Power = 1 W')

Figure Scatter Plot contains an axes object. The axes object with title 64-QAM, Average Power = 1 W contains an object of type line. This object represents Channel 1.

グレイ、バイナリおよびカスタムの各シンボル マッピングの QAM コンスタレーションをプロットします。

変調次数を設定し、変調方式のシンボルの完全なセットを含むデータ シーケンスを作成します。

M = 16;
d = [0:M-1];

データを変調し、そのコンスタレーションをプロットします。既定のシンボル マッピングではグレイの順序を使用します。点は逐次的になっていません。

y = qammod(d,M,'PlotConstellation',true);

Figure contains an axes object. The axes object with title 16-QAM, Gray Mapping, UnitAveragePower=false contains 19 objects of type line, text.

バイナリ シンボル マッピングで変調処理を繰り返します。シンボル マッピングは通常のバイナリ順序に従い、逐次的になります。

z = qammod(d,M,'bin','PlotConstellation',true);

Figure contains an axes object. The axes object with title 16-QAM, Binary Mapping, UnitAveragePower=false contains 19 objects of type line, text.

カスタムのシンボル マッピングを作成します。

smap = randperm(M)-1;

変調を行い、コンスタレーションをプロットします。

w = qammod(d,M,smap,'PlotConstellation',true);

Figure contains an axes object. The axes object with title 16-QAM, Custom Mapping, UnitAveragePower=false contains 19 objects of type line, text.

64-QAM を使用してビットのシーケンスを変調します。ノイズの多いチャネルを通して信号を渡します。結果のコンスタレーション ダイアグラムを表示します。

変調次数を設定し、シンボルあたりのビット数を求めます。

M = 64;
k = log2(M);

バイナリ データのシーケンスを作成します。バイナリ入力を使用する場合、入力の行数はシンボルあたりのビット数の整数倍でなければなりません。

data = randi([0 1],1000*k,1);

ビット入力を使用して信号を変調し、単位平均パワーをもつように設定します。

txSig = qammod(data,M,'InputType','bit','UnitAveragePower',true);

ノイズの多いチャネルを通して信号を渡します。

rxSig = awgn(txSig,25);

コンスタレーション ダイアグラムをプロットします。

cd = comm.ConstellationDiagram('ShowReferenceConstellation',false);
cd(rxSig)

固定小数点 QAM 信号を復調し、データが正しく復元されていることを検証します。

変調次数を 64 として設定し、シンボルあたりのビット数を求めます。

M = 64;
bitsPerSym = log2(M);

ランダムなビットを生成します。ビット モードで動作している場合、入力データの長さはシンボルあたりのビット数の整数倍でなければなりません。

x = randi([0 1],10*bitsPerSym,1);

バイナリ シンボル マッピングを使用して入力データを変調します。固定小数点データを出力するように変調器を設定します。数値データ型は符号付きで、語長は 16 ビット、小数部の長さは 10 ビットです。

y = qammod(x,M,'bin','InputType','bit','OutputDataType', ...
    numerictype(1,16,10));

64-QAM 信号を復調します。復調されたデータが入力データと一致することを検証します。

z = qamdemod(y,M,'bin','OutputType','bit');
s = isequal(x,double(z))
s = logical
   1

入力引数

すべて折りたたむ

入力信号。スカラー、ベクトル、行列または 3 次元配列として指定します。x の要素は、バイナリ値または 0 ~ (M – 1) の範囲の整数でなければなりません。ここで M は変調次数です。

メモ

入力信号をバイナリの要素として処理するには、'InputType' の名前と値のペアを 'bit' に設定します。バイナリ入力の場合、行数は log2(M) の整数倍でなければなりません。log2(M) ビットのグループがシンボルにマッピングされます。ここで、最初のビットは MSB を表し、最後のビットは LSB を表します。

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

変調次数。2 のべき乗のスカラー整数で指定します。変調次数は信号コンスタレーションのポイント数を指定します。

例: 16

データ型: double

シンボルの順序。'gray''bin' またはベクトルで指定します。

  • 'gray'グレイ符号の順序を使用

  • 'bin' — 通常の 2 値符号の順序を使用

  • Vector — カスタムのシンボル順序を使用

ベクトルには、値の範囲が 0 ~ M – 1 の一意の要素を使用しなければなりません。最初の要素はコンスタレーションの左上の点に対応しており、続く要素は左から右の列方向に実行されます。

例: [0 3 1 2]

データ型: char | double

名前と値の引数

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

R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Name を引用符で囲みます。

例: y = qammod(x,M,symOrder,'InputType','bit')

入力タイプ。'InputType''integer' または 'bit' のどちらかで構成されるコンマ区切りのペアとして指定します。'integer' を指定する場合、入力信号は 0 ~ M – 1 の整数で構成されなければなりません。'bit' を指定する場合は、入力信号がバイナリ値を含まなければならず、行数は log2(M) の整数倍でなければなりません。

データ型: char

単位平均パワー フラグ。'UnitAveragePower' と数値または logical 0 (false) または 1 (true) で構成されるコンマ区切りペアとして指定します。このフラグが 1 (true) の場合、関数は 1 オームを基準とした 1 ワットの平均電力にコンスタレーションをスケーリングします。このフラグが 0 (false) の場合、関数は、QAM コンスタレーション点が最小距離 2 で分割されるように、コンスタレーションをスケーリングします。

出力データ型。'OutputDataType'numerictype オブジェクトで構成されるコンマ区切りのペアとして指定します。

これらのオブジェクトの作成の詳細については、numerictype (Fixed-Point Designer) を参照してください。'OutputDataType' を指定しないと、データ型は、入力がデータ型 double または組み込み整数の場合は double になり、入力がデータ型 single の場合は single になります。

コンスタレーションをプロットするためのオプション。'PlotConstellation' と数値または logical 0 (false) または 1 (true) で構成されるコンマ区切りペアとして指定します。QAM コンスタレーションをプロットするには、'PlotConstellation'true に設定します。

出力引数

すべて折りたたむ

変調した信号。数値の複素数のスカラー、ベクトル、行列または 3 次元配列として返されます。整数入力の場合、出力 y の次元は入力信号 x と同じになります。ビット入力の場合、y の行数は log2(M) で除算した x の行数になります。

データ型: double | single

詳細

すべて折りたたむ

グレイ符号

交番 2 進符号とも呼ばれる "グレイ符号" は、隣接するコンスタレーション点の間でビット パターンが 1 ビットだけ異なるシステムです。

拡張機能

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

バージョン履歴

R2006a より前に導入

すべて展開する