Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

pskdemod

位相シフト キーイング復調

説明

z = pskdemod(y,M) は、変調次数 M をもつ PSK 変調された信号の複素エンベロープ y を復調します。

z = pskdemod(y,M,ini_phase) は、PSK 変調された信号の初期位相を指定します。

z = pskdemod(y,M,ini_phase,symorder) は、PSK 変調された信号のシンボル順序を指定します。

すべて折りたたむ

PSK と PAM の変調方式を比較し、PSK の方が位相ノイズの影響を受けやすいことを示します。PSK コンスタレーションは円形ですが PAM コンスタレーションが線形なため、これは予想される結果です。

シンボル数と変調次数のパラメーターを指定します。ランダム データ シンボルを生成します。

len = 10000;                
M = 16;                     
msg = randi([0 M-1],len,1);

PSK と PAM の両方を使用して msg を変調し、2 つの方法を比較します。

txpsk = pskmod(msg,M);
txpam = pammod(msg,M);

ランダム位相回転を適用して、変調された信号の位相をずらします。

phasenoise = randn(len,1)*.015;
rxpsk = txpsk.*exp(2i*pi*phasenoise);
rxpam = txpam.*exp(2i*pi*phasenoise);

受信信号の散布図を作成します。

scatterplot(rxpsk);
title('Noisy PSK Scatter Plot')

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

scatterplot(rxpam);
title('Noisy PAM Scatter Plot')

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

受信信号を復調します。

recovpsk = pskdemod(rxpsk,M);
recovpam = pamdemod(rxpam,M);

それぞれの変調方式のシンボル誤りの数を計算します。PSK 信号の場合、かなり多数のシンボル誤りが発生します。

numerrs_psk = symerr(msg,recovpsk);
numerrs_pam = symerr(msg,recovpam);
[numerrs_psk numerrs_pam]
ans = 1×2

   343     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 = 2

グレイ バイナリ符号化データと通常のバイナリ符号化データの PSK シンボル マッピングをプロットします。

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

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

グレイ バイナリ符号化データと通常のバイナリ符号化データを使用してデータを変調および復調します。

symgray = pskmod(data,M,phz,'gray');
mapgray = pskdemod(symgray,M,phz,'gray');

symbin = pskmod(data,M,phz,'bin');
mapbin = pskdemod(symbin,M,phz,'bin');

いずれかのシンボル セットを使用してコンスタレーション点をプロットします。コンスタレーション点ごとに、各シンボルのグレイ バイナリ値と通常のバイナリ値を示すラベルを割り当てます。

  • グレイ バイナリ シンボル マッピングでは、隣接するコンスタレーション点は 1 バイナリ ビットだけ異なり、数値上で逐次的になっていません。

  • 通常のバイナリ シンボル マッピングでは、隣接するコンスタレーション点は通常のバイナリ符号化に従い、逐次的になります。

scatterplot(symgray,1,0,'b*');
for k = 1:M
    text(real(symgray(k))-0.2,imag(symgray(k))+.15,...
        dec2base(mapgray(k),2,4));
     text(real(symgray(k))-0.2,imag(symgray(k))+.3,...
         num2str(mapgray(k)));
    
    text(real(symbin(k))-0.2,imag(symbin(k))-.15,...
        dec2base(mapbin(k),2,4),'Color',[1 0 0]);
    text(real(symbin(k))-0.2,imag(symbin(k))-.3,...
        num2str(mapbin(k)),'Color',[1 0 0]);
end
axis([-2 2 -2 2])

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

入力引数

すべて折りたたむ

PSK 変調された入力信号。実数または複素数のベクトルまたは行列として指定します。y が行列の場合、関数は列を個別に処理します。

データ型: double
複素数のサポート: あり

変調次数。2 の整数乗で指定します。

例: 2 | 4 | 16

データ型: double

PSK 変調の初期位相。ラジアン単位の実数スカラーで指定します。

ini_phase が空の場合、pskdemod は 0 の初期位相を使用します。

例: pi/4

データ型: double

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

  • symorder'bin' に設定されている場合、関数は通常の 2 値符号の順序を使用します。

  • symorder'gray' に設定されている場合、関数はグレイ符号の順序を使用します。

データ型: char

出力引数

すべて折りたたむ

PSK 復調された出力信号。入力信号 y と同じ列数をもつベクトルまたは行列として返されます。

R2006a より前に導入