Main Content

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

pskmod

M-PSK 法を使用した信号の変調

説明

y = pskmod(x,M) は、M-Ary 位相偏移変調 (M-PSK) 法を使用して入力信号 x を変調します。M は変調次数を指定します。

y = pskmod(x,M,phaseoffset) は、M-PSK コンスタレーションの位相オフセットを指定します。

y = pskmod(x,M,phaseoffset,symorder) は、M-PSK コンスタレーションのシンボル順序を指定します。

y = pskmod(x,M,Name=Value) は、名前と値の引数を使用してオプションを指定します。

すべて折りたたむ

QPSK 信号と 16-PSK 信号を変調し、コンスタレーションをプロットします。

QPSK

変調次数を 4 に設定します。

M = 4;

ランダム データ シンボルを生成します。

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

データ シンボルを変調します。

txSig = pskmod(data,M,pi/M);

ホワイト ノイズを通して信号を渡し、そのコンスタレーションをプロットします。

rxSig = awgn(txSig,20);
scatterplot(rxSig)

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.

16-PSK

変調次数を 4 から 16 に変更します。

M = 16;

ランダム データ シンボルを生成します。

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

データ シンボルを変調します。

txSig = pskmod(data,M,pi/M);

ホワイト ノイズを通して信号を渡し、そのコンスタレーションをプロットします。

rxSig = awgn(txSig,20);
scatterplot(rxSig)

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.

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

dataIn = randi([0 3],1000,1);

データを QPSK 変調します。

txSig = pskmod(dataIn,4,pi/4);

AWGN チャネルを通して信号を渡します。

rxSig = awgn(txSig,10);

受信信号を復調し、シンボル誤りの数を計算します。

dataOut = pskdemod(rxSig,4,pi/4);
numErrs = symerr(dataIn,dataOut)
numErrs = 3

変調次数を設定し、コンスタレーション点の完全なセットを含むデータ シーケンスを作成します。

M = 8;
data = (0:M-1);
phaseoffset = 0;

変調および復調されたグレイ符号化データおよびバイナリ符号化データに対する 8-PSK シンボル マッピングのプロット コンスタレーションを可視化します。

symgray = pskmod(data,M,phaseoffset,'gray',PlotConstellation=true, ...
          InputType='integer');

Figure contains an axes object. The axes object with title 8-PSK, Gray Mapping, xlabel In-phase Amplitude, ylabel Quadrature Amplitude contains 11 objects of type line, text. One or more of the lines displays its values using only markers

mapgray = pskdemod(symgray,M,phaseoffset,'gray',OutputType='integer');
symbin = pskmod(data,M,phaseoffset,'bin');
mapbin = pskdemod(symbin,M,phaseoffset,'bin',PlotConstellation=true, ...
         OutputType='bit');

Figure contains an axes object. The axes object with title 8-PSK, Binary Mapping, xlabel In-phase Amplitude, ylabel Quadrature Amplitude contains 11 objects of type line, text. One or more of the lines displays its values using only markers

入力引数

すべて折りたたむ

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

メモ

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

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

変調次数。1 より大きい整数値として指定します。

データ型: double

PSK コンスタレーションの位相オフセット (ラジアン単位)。スカラーとして指定します。

データ型: double

シンボルの順序。'gray''bin' またはベクトルで指定します。この引数は、どのようにバイナリ ベクトルを対応する整数に割り当てるかを指定します。

  • 'gray' — グレイ符号の順序を使用します。

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

  • ベクトル –– カスタムのシンボル順序を使用します。ベクトルの長さは M で、範囲 [0, M – 1] 内の一意の値を含みます。最初の要素は、角度 phaseoffset に対応するコンスタレーション点に相関し、続く要素は反時計回りに実行されます。

名前と値の引数

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

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

例: y = pskmod(x,M,phaseoffset,symorder,InputType='bit')

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

  • 'integer' –– 入力信号が [0, M – 1] の範囲の整数で構成されます。

  • 'bit' –– 入力信号がバイナリ値で構成され、行数が log2(M) の整数倍でなければなりません。

出力データ型。'double' または 'single' として指定します。

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

出力引数

すべて折りたたむ

M-PSK 変調されたベースバンド信号。複素数値のスカラー、ベクトルまたは行列として返されます。y の列は独立したチャネルを表します。整数入力の場合、出力 y の次元は入力信号 x と同じになります。ビット入力の場合、y の行数は log2(M) で除算した x の行数になります。

参照

[1] Proakis, John G. Digital Communications. 4th ed. New York: McGraw Hill, 2001.

拡張機能

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

バージョン履歴

R2006a より前に導入

すべて展開する