【MATLAB】通信の勉強をする前の練習問題【問題編②変調】


更新履歴:2018/09/06:問題 作成

【第2章】変調

ビットは必ず変調が施されてから通信路に乗って受信機側へ到達することになります。今回は代表的な変調方式であるBPSK変調とQPSK変調を行う練習をしましょう。第1章に引き続き、できるだけfor文は使わないように気を付けましょう。

問題(1) BPSK変調

2行$N$列の[0,1]から構成されるビット列を「0」→「-1」,「1」→[1]としてBPSK変調することにより、[-1,1]から構成される2行$N$列のシンボル列を生成しましょう。

ヒント

A(A == 0) = -1;

これで「Aという行列のうち、0という要素をすべて-1に置き換える」という操作ができます。

問題(2) QPSK変調

2行$N$列の[0,1]から構成されるビット列を「00」→「$e^{j\frac{\pi}{4}}$」,「01」→「$e^{j\frac{3\pi}{4}}$」,「11」→「$e^{j\frac{5\pi}{4}}$」,「10」→「$e^{j\frac{7\pi}{4}}$」としてQPSK変調することにより、[$e^{j\frac{\pi}{4}}$,$e^{j\frac{3\pi}{4}}$,$e^{j\frac{5\pi}{4}}$,$e^{j\frac{7\pi}{4}}$]から構成される2行$N/2$列のシンボル列を生成しましょう。

ヒント

・まずはBPSK変調をしてみましょう。

B = A(:,1:2:end) + 1j*A(:,2:2:end);

・BPSK変調したのち、上ような構文を使うとスマートにできるかもしれません。

解答

% おまじない
clear all

% 送信ビット数
N = 10^6;

% ビット列の生成
TX_bit = randi([0,1],2,N);

%問(1) BPSK変調
TX_BPSK = zeros(size(TX_bit));
TX_BPSK(TX_bit == 0) = -1;
TX_BPSK(TX_bit == 1) = 1;

%問(2) QPSK変調
TX_QPSK = (TX_BPSK(:,1:2:end) + 1j*TX_BPSK(:,2:2:end))/sqrt(2);