Main Content

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

qammod

説明

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

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

Y = qammod(___,Name=Value) は、前の構文の入力引数を任意に組み合わせたものに加え、名前と値の引数を使用してオプションを指定します。たとえば、InputType=bit は入力信号の型をビットに設定します。

すべて折りたたむ

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, xlabel In-Phase, ylabel Quadrature contains a line object which displays its values using only markers. 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, xlabel In-Phase, ylabel Quadrature contains a line object which displays its values using only markers. 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, xlabel In-Phase, ylabel Quadrature contains a line object which displays its values using only markers. 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, xlabel In-phase Amplitude, ylabel Quadrature Amplitude contains 19 objects of type line, text. One or more of the lines displays its values using only markers

バイナリ シンボル マッピングで変調処理を繰り返します。シンボル マッピングはバイナリ符号の順序に従い、かつ連続しています。

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

Figure contains an axes object. The axes object with title 16-QAM, Binary Mapping, UnitAveragePower=false, xlabel In-phase Amplitude, ylabel Quadrature Amplitude contains 19 objects of type line, text. One or more of the lines displays its values using only markers

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

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, xlabel In-phase Amplitude, ylabel Quadrature Amplitude contains 19 objects of type line, text. One or more of the lines displays its values using only markers

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 の正の整数乗として指定します。変調次数は信号コンスタレーション点の数を指定します。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

  • 'gray' — グレイ符号の順序を使用します。詳細については、グレイ符号を参照してください。

  • 'bin' — バイナリ符号の順序を使用します。

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

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

例: [0 3 1 2]

データ型: string | char | double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

名前と値の引数

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

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

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

入力タイプ。'integer' または 'bit' として指定します。

  • 'integer' を指定した場合、入力信号は範囲 [0, (M – 1)] の整数で構成されなければなりません。

  • 'bit' を指定する場合は、入力信号がバイナリ値を含まなければならず、行数は log2(M) の整数倍でなければなりません。

単位平均パワー フラグ。数値または logical を使用して、0 (false) または 1 (true) として指定します。

  • このフラグが 1 (true) の場合、関数は 1 オームを基準とした 1 ワットの平均電力にコンスタレーションをスケーリングします。

  • このフラグが 0 (false) の場合、関数は、QAM コンスタレーション点が最小距離 2 で分割されるように、コンスタレーションをスケーリングします。

出力データ型。numerictype オブジェクトとして指定します。これらのオブジェクトの作成の詳細については、numerictype (Fixed-Point Designer) を参照してください。

  • このプロパティを指定せず、かつ入力データ型が double または組み込み整数の場合、出力データ型は double です。

  • 入力データ型が single の場合、出力データ型は single です。

コンスタレーションをプロットするためのオプション。数値または logical を使用して、0 (false) または 1 (true) として指定します。QAM コンスタレーションをプロットするには、PlotConstellation=true を指定します。

出力引数

すべて折りたたむ

変調した信号。数値の複素数のスカラー、ベクトル、行列または 3 次元配列として返されます。

  • 整数入力の場合、出力 Y の次元は入力信号 X と同じになります。

  • ビット入力の場合、Y の行数は X の行数を log2(M) で除算した値になります。

出力データ型の詳細については、OutputDataType を参照してください。

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

詳細

すべて折りたたむ

グレイ符号

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

拡張機能

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

バージョン履歴

R2006a より前に導入

すべて展開する