最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

複素包絡線を使用した変調と復調

この例では、基本的な通信プロセスのさまざまなステップをシミュレートします。通信システムでは、情報のチャンクがより高い "搬送周波数" に変調され、変調された信号がノイズの多い物理チャネルで送信され、ノイズの多い波形が受信され、受信信号が復調されて初期情報が再構成されます。

実数値の信号 s(t) で運ばれるすべての情報は、対応するローパス "複素包絡線" で表すことができます。

s(t)=Re{g(t)ej2πfct}=i(t)cos2πfct+q(t)sin2πfct.

この方程式は、以下を意味します。

  • fc は搬送周波数。

  • Re は複素数値の量の実数部。

  • g(t)=i(t)+jq(t)s(t) の複素包絡線。

  • i(t) は複素包絡線の "同相" 成分。

  • q(t) は複素包絡線の "直交" 成分。

複素包絡線は搬送周波数に変調され、チャネルを介して送信されます。受信機では、ノイズの多い波形が搬送周波数を使用して復調されます。

搬送周波数による位相変動は予測可能であるため、情報を伝達しません。複素包絡線には位相バリエーションは含まれず、より低いレートでサンプリングできます。

複素包絡線が正弦波とチャープで構成される信号を生成します。同相成分は、周波数が 19 Hz の正弦波です。直交成分は、周波数が 61 Hz ~ 603 Hz の範囲の二次チャープです。信号は 2 kHz で 1 秒間サンプリングされます。

fs = 2e3;
t = (0:1/fs:1-1/fs)';
inph = sin(2*pi*19*t);
quad = chirp(t-0.6,61,t(end),603,'quadratic');

複素包絡線を計算し、サンプルレート fs の MATLAB® timetable として保存します。

env = inph + 1j*quad;
g = timetable(env,'SampleRate',fs);

信号アナライザーを開いて、ワークスペース ブラウザーから信号テーブルに複素包絡線をドラッグします。ディスプレイには、包絡線の同相成分と直交成分が、同じ色相と彩度を持ち、輝度が異なるラインとして表示されます。最初のラインの色は同相成分を表し、2 番目のラインの色は直交成分を表します。[表示] タブの [スペクトル] ▼ をクリックして、Spectrum を選択します。アプリに信号スペクトルを含む座標軸のセットが表示されます。複素包絡線には両側スペクトルがあり、複素包絡線の同相成分と同じ色のラインとして表示されます。

[表示] タブで [パナー] をクリックしてパナーをアクティブにします。パナーを使用して、300 ms ~ 720 ms のズーム ウィンドウを作成します。このズーム ウィンドウをドラッグして、中心を 0 Hz にします。このスペクトルは 0.19 kHz にインパルスがあり、周波数が高くなるにつれて小さくなる幅広のプロファイルを持ちます。スペクトルの負の周波数領域は、正の周波数領域の鏡像です。

200 Hz の搬送周波数を使用して信号を変調します。変調された信号のパワーが元の信号のパワーと等しくなるように 2 で乗算します。S/N 比が 40 dB となるホワイト ガウス ノイズを付加します。

fc = 200;
mod = sqrt(2)*real(env.*exp(2j*pi*fc*t));

SNR = 40;
mod = mod + randn(size(mod))*std(mod)/db2mag(SNR);
s = timetable(mod,'SampleRate',fs);

[グリッドの表示] ▼ をクリックして、2 番目のディスプレイを追加します。変調された信号を信号テーブルにドラッグし、時間情報を入力します。変調により、搬送周波数を中心とした正の周波数にスペクトルが移動しました。

解析信号を計算し、解析信号に周波数 200 Hz の複素数値の負の指数を乗算して信号を復調します。

dem = hilbert(mod).*exp(-2j*pi*fc*t)/sqrt(2);

[グリッドの表示] ▼ をクリックして、3 行 1 列のグリッドの表示を作成します。復調された信号を信号テーブルにドラッグします。[アナライザー] タブの [時間値] をクリックして、複素包絡線に時間情報を追加します。両側スペクトルは、ベースバンド信号の復元された同相成分と直交成分を示しています。

[グリッドの表示] ▼ をクリックして、1 行 1 列のグリッドの表示を作成し、復調された信号をプロットします。[データ カーソル] ▼ をクリックし、Two を選択します。時間領域カーソルを 300 ms と 900 ms に配置して、スペクトル ピークを囲むようにします。[信号の抽出] ▼ をクリックし、Between Time Cursors を選択します。[開始時間の保持] ボックスをオンにします。表示をクリアし、抽出された信号をプロットします。アプリにより、関心領域の復調された信号の同相成分と直交成分が両方とも抽出されます。信号テーブルの [名前] 列をクリックして、抽出された信号を選択します。[アナライザー] タブで [エクスポート] をクリックして信号を dem_ROI.mat という MAT ファイルに保存します。

dem_ROI ファイルをワークスペースに読み込みます。抽出された信号の実数部と虚数部を取得して、復調された同相成分と直交成分を計算します。抽出された信号の時間情報を時間変数 t_dem に格納します。

load dem_ROI
inph_dem = real(dem_ROI);
quad_dem = imag(dem_ROI);
t_dem = 0.3+(0:length(dem_ROI)-1)/fs;

送信された波形と抽出された関心領域を比較します。また、それらのスペクトルを比較します。

subplot(2,1,1)
plot(t,inph,t_dem,inph_dem,'--')
legend('Transmitted Inphase Signal','Received Inphase Signal')

subplot(2,1,2)
plot(t,quad,t_dem,quad_dem,'--')
legend('Transmitted Quadrature Signal','Received Quadrature Signal')

figure
subplot(2,1,1)
pspectrum(inph,fs)
hold on
pspectrum(inph_dem,fs)
legend('Transmitted Inphase Signal','Received Inphase Signal')
hold off

subplot(2,1,2)
pspectrum(quad,fs)
hold on
pspectrum(quad_dem,fs)
legend('Transmitted Quadrature Signal','Received Quadrature Signal')
hold off

参考

アプリ

関数

関連する例

詳細