位相変調の例
以下の例では、位相変調 (PM) の手法を示します。
PSK および PAM 信号への位相ノイズの影響の比較
PSK と PAM の変調スキームを比較し、PSK の方が位相ノイズの影響を受けやすいことを示します。PSK の方が位相ノイズの影響を受けやすいのは、PAM コンスタレーションが線形であるのに対し PSK コンスタレーションが円形であるためです。
シンボル数と変調次数のパラメーターを指定します。ランダム データ シンボルを生成します。
len = 10000; M = 16; msg = randi([0 M-1],len,1);
位相ノイズ System object™ を作成し、構成された設定を表示します。
phasenoise = comm.PhaseNoise(Level=[-70 -80])
phasenoise =
comm.PhaseNoise with properties:
Level: [-70 -80]
FrequencyOffset: [2000 20000]
SampleRate: 1000000
RandomStream: 'Global stream'
PSK と PAM の両方を使用して msg を変調し、2 つの方法を比較します。
txpsk = pskmod(msg,M); txpam = pammod(msg,M);
変調された信号の位相をずらします。
rxpsk = phasenoise(txpsk); rxpam = phasenoise(txpam);
受信信号の散布図を作成します。
scatterplot(rxpsk);
title('Noisy PSK Scatter Plot')
scatterplot(rxpam);
title('Noisy PAM Scatter Plot')
受信信号を復調します。
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
795 3
DQPSK 信号コンスタレーション点と遷移の比較
このモデルでは、DQPSK Modulator Baseband ブロックの出力をプロットします。イメージは DQPSK 信号コンスタレーションの各シンボルから次のシンボルへの有効な遷移を示します。

doc_dqpsk_plot は次のブロックを使用します。
Complex to Real-Imag (Simulink)
XY グラフ (詳細については、XY プロットでのシミュレーション データの可視化 (Simulink)を参照)
Random Integer Generator ブロックでは、M-ary 数を 4 に設定し、初期シードを任意の正のスカラー整数 (結果をランダムにするため関数randnの出力を使用可能) に設定し、サンプル時間を 0.01 に設定します。

DQPSK Modulator Baseband ブロック内の既定の位相オフセットは π/4 であるため、このプロットは π/4-DQPSK 変調を示しています。位相オフセットの信号コンスタレーションへの影響を確認するには、DQPSK Modulator Baseband ブロックの [Phase offset] パラメーターを π/8 または別の値に変更します。再びモデルを再び実行し、プロットの変化の様子を観察します。
8-PSK 変調データの GPU をベースとした畳み込み符号化とビタビ復号化
GPU ベースの畳み込み符号化器 System object を作成します。
conEnc = comm.gpu.ConvolutionalEncoder;
ビット入力信号を受け入れる GPU ベースの位相偏移変調 (PSK) の変調器 System object を作成します。
modPSK = comm.gpu.PSKModulator(BitInput=true);
ビット値の列ベクトルを出力する GPU ベースの PSK 復調器 System object を作成します。
demodPSK = comm.gpu.PSKDemodulator(BitOutput=true);
0 または 1 の硬判定値の入力ベクトルを受け入れる、GPU ベースのビタビ復号化器 System object を作成します。
vDec = comm.gpu.ViterbiDecoder(InputFormat='Hard');3 つのデータ サンプルを無視した後に比較を行う、エラー レート System object を作成します。受信データは送信データよりも 34 個のサンプル分遅れます。
error = comm.ErrorRate(ComputationDelay=3,ReceiveDelay=34);
次の for ループを使用してデータを処理し、シミュレーションを実行します。0 dBW の信号に SNR が 7 dB のホワイト ノイズを付加します。
for counter = 1:20 data = randi([0 1],30,1); encodedData = conEnc(gpuArray(data)); modSignal = modPSK(encodedData); receivedSignal = awgn(modSignal,7); demodSignal = demodPSK(receivedSignal); receivedBits = vDec(demodSignal); errors = error(data,gather(receivedBits)); end
誤り数を表示します。
errors(2)
ans = 5
参考
関数
rcosdesign|dpskmod|dpskdemod|pskmod|pskdemod
オブジェクト
comm.RaisedCosineTransmitFilter|comm.RaisedCosineReceiveFilter|comm.DBPSKModulator|comm.DBPSKDemodulator|comm.DPSKModulator|comm.DPSKDemodulator|comm.DQPSKModulator|comm.DQPSKDemodulator|comm.OQPSKModulator|comm.OQPSKDemodulator|comm.gpu.PSKModulator|comm.gpu.PSKDemodulator
ブロック
- Raised Cosine Transmit Filter | Raised Cosine Receive Filter | Bipolar to Unipolar Converter | Unipolar to Bipolar Converter | Data Mapper | BPSK Modulator Baseband | BPSK Demodulator Baseband | DBPSK Modulator Baseband | DBPSK Demodulator Baseband | DQPSK Modulator Baseband | DQPSK Demodulator Baseband | M-DPSK Modulator Baseband | M-DPSK Demodulator Baseband | M-PSK Modulator Baseband | M-PSK Demodulator Baseband | OQPSK Modulator Baseband | OQPSK Demodulator Baseband | QPSK Modulator Baseband | QPSK Demodulator Baseband