メインコンテンツ

通信アプリケーション

変調

"変調" は、"メッセージ信号" を基に "搬送波信号" の振幅、位相、または周波数を変化させます。関数 modulate は、設定された変調法を使用して、メッセージ信号を変調します。

関数 modulate の基本構文は以下のとおりです。

y = modulate(x,fc,fs,'method',opt)

ここで、

  • x はメッセージ信号。

  • fc は搬送波周波数。

  • fs は、サンプリング周波数

  • method は、目的とする変調法のフラグ

  • opt は、手法に必要な追加の引数(変調法によってはオプションの引数は不要)。

以下の表は、提供される変調法を要約したものです。詳細については、modulatedemod、および vco に関するドキュメンテーションを参照してください。

メソッド

説明

amdsb-sc または am

振幅変調、両側波帯、抑圧搬送波

amdsb-tc

振幅変調、両側波帯伝送搬送波

amssb

振幅変調、片側波帯

fm

周波数変調

pm

位相変調

ppm

パルス時間変調

pwm

パルス幅変調

qam

直交振幅変調

入力 x がベクトルでなく配列の場合、modulate は、配列の各列単位に変調します。

modulate が変調する信号を計算するのに使用する時間ベクトルを得るには、以下のように 2 つの出力パラメーターを設定します。

[y,t] = modulate(x,fc,fs,'method',opt)

復調

関数 demod"復調" を行います。すなわち、変調された信号から元のメッセージ信号を取り出します。

demod の構文は、以下のとおりです。

x = demod(y,fc,fs,'method',opt)

demod は、modulate に示した任意の手法が使用されますが、直交振幅復調の構文については、以下のように 2 つの出力パラメーターが必要です。

[X1,X2] = demod(y,fc,fs,'qam')

入力 y が配列の場合、demod はすべての列を復調します。

次に、信号の変調と復調を行います。1,000 Hz でサンプリングした 50 Hz の正弦波は、以下のようになります。

t = (0:1/1000:2);
x = sin(2*pi*50*t);

200 Hz の搬送波周波数を使用して、この信号を変調し、復調します。

y = modulate(x,200,1000,'am');
z = demod(y,200,1000,'am');

元の信号、変調された信号、および復調された信号の一部をプロットするには、次のようにします。

figure; plot(t(1:150),x(1:150)); title('Original Signal');
figure; plot(t(1:150),y(1:150)); title('Modulated Signal');
figure; plot(t(1:150),z(1:150)); title('Demodulated Signal');

元の信号

変調した信号

復調した信号

メモ

復調された信号は減衰していますが、これは、復調処理には次の 2 つのステップが含まれるからです。乗算処理およびローパス フィルター処理。乗算処理では、0 Hz を中心とする周波数成分とキャリア周波数の 2 倍の周波数の成分が生成されます。フィルター処理では、信号のうちの高い側の周波数成分が除去されるため、結果として得られる信号は小さくなります。

電圧制御発振器

電圧制御発振器関数 vco は、入力ベクトルによって決定された周波数で振動する信号を作成します。vco の基本構文は、以下のとおりです。

y = vco(x,fc,fs)

ここで、fc は搬送波周波数、fs はサンプリング周波数です。

周波数変調範囲をスケーリングするには、次のようにします。

y = vco(x,[Fmin Fmax],fs)

この場合、vco は、区間 [-1 1] にある x の値が、[Fmin Fmax] にある周波数の振動にマッピングされるように周波数変調範囲をスケーリングします。

入力 x が配列の場合、vcox の列に基づいて振動する配列を作成します。

関数 vco の使用例は、FFT による時間-周波数解析を参照してください。