Main Content

comm.FMModulator

FM 方式を使用した信号の変調

説明

comm.FMModulator System object™ は、ベースバンド周波数変調を信号に適用します。詳細については、アルゴリズムの節を参照してください。

FM 方式を使用して信号を変調するには、次のようにします。

  1. comm.FMModulator オブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の機能の詳細については、System object とは を参照してください。

作成

説明

fmmodulator = comm.FMModulator は、FM 変調器 System object を作成します。

fmmodulator = comm.FMModulator(Name,Value) は、名前と値からなる 1 つ以上の引数を使用してプロパティを設定します。たとえば、'SampleRate,400e3' はサンプル レートを 400 kHz に指定します。

fmmodulator = comm.FMModulator(fmdemodulator) は、入力 comm.FMDemodulator System object fmdemodulator の構成に基づいてプロパティを設定します。

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。

プロパティが "調整可能" の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。

入力信号のサンプル レート (Hz 単位)。正のスカラーとして指定します。このプロパティは、変調器の出力でのサンプル レート、または復調器の入力でのサンプル レートを指定します。サンプル レートは周波数偏差の 2 倍より大きくなければなりません (つまり、SampleRate > 2×FrequencyDeviation)。

データ型: double

出力信号周波数のピーク偏差 (Hz 単位)。正のスカラーとして指定します。周波数偏差はサンプル レートの半分より小さくなければなりません (つまり、FrequencyDeviation < SampleRate/2)。

システムの帯域幅は BT = 2×(FrequencyDeviation + BM) です。ここで、BM はメッセージ帯域幅 (Hz 単位) です。詳細については、アルゴリズムの節を参照してください。

データ型: double

使用法

説明

outsig = fmmodulator(insig) は、入力メッセージ信号を変調し、ベースバンド FM 信号を出力します。

入力引数

すべて展開する

入力信号。スカラーまたは列ベクトルとして指定します。

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

出力引数

すべて展開する

変調されたベースバンド FM 信号。複素数値を持つスカラーまたは列ベクトルとして返されます。出力信号のデータ型とサイズは入力 insig と同じです。

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

ベースバンド変調を正弦波に適用します。正弦波と変調された信号をプロットします。

例で使用するパラメーターを設定します。

fs = 1e3;  % Sample rate (Hz)
ts = 1/fs; % Sample period (s)
fd = 50;   % Frequency deviation (Hz)

持続時間が 0.5 秒で周波数が 4 Hz の正弦波信号を作成します。

t = (0:ts:0.5-ts)';
x = sin(2*pi*4*t);

FM 変調器 System object™ を作成し、サンプル レートと周波数偏差を設定します。

fmmodulator = comm.FMModulator( ...
    'SampleRate',fs, ...
    'FrequencyDeviation',fd);

信号を FM 変調し、実数部をプロットします。変調された信号の周波数は、入力信号の振幅によって変化します。

y = fmmodulator(x);
plot(t,[x real(y)])

Figure contains an axes object. The axes object contains 2 objects of type line.

ベースバンド FM 変調をホワイト ガウス ノイズ源に適用し、変調された信号のスペクトルをプロットします。

例で使用するパラメーターを初期化します。

fs = 1e3;  % Sample rate (Hz)
ts = 1/fs; % Sample period (s)
fd = 10;   % Frequency deviation (Hz)

持続時間が 5 秒のホワイト ガウス ノイズ源を作成します。

t = (0:ts:5-ts)';
x = wgn(length(t),1,0);

2 つの FM 変調器 System object を作成し、サンプル レートと周波数偏差を設定します。2 番目の FM 変調器 System object の周波数偏差は、最初の FM 変調器 System object の 5 倍の値に設定します。

fmmod1 = comm.FMModulator( ...
    'SampleRate',fs, ...
    'FrequencyDeviation',fd);
fmmod2 = comm.FMModulator( ...
    'SampleRate',fs, ...
    'FrequencyDeviation',5*fd);

これらの FM 変調器 System object を呼び出して、FM 変調を信号 x に適用します。

y1 = fmmod1(x);
y2 = fmmod2(x);

2 つの変調された信号のスペクトルをプロットします。チャネル 2 と関連付けられた大きい方の周波数偏差のノイズ レベルは、最初のチャネルより 10 dB 高くなります。

specanalyzer = dsp.SpectrumAnalyzer('SampleRate',fs,'ShowLegend',true);
specanalyzer([y1 y2])

Figure Spectrum Analyzer contains an axes object and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes object contains 2 objects of type line. These objects represent Channel 1, Channel 2.

正弦波信号を変調および復調します。復調された信号をプロットし、元の信号と比較します。

例で使用するパラメーターを初期化します。

fs = 100;  % Sample rate (Hz)
ts = 1/fs; % Sample period (s)
fd = 25;   % Frequency deviation (Hz)

持続時間が 0.5 秒で周波数が 4 Hz の正弦波信号を作成します。

t = (0:ts:0.5-ts)';
x = sin(2*pi*4*t);

FM 変調器 System object を作成し、サンプル レートと周波数偏差を設定します。次に、FM 復調器 System object を作成し、FM 変調器の構成を使用して復調器のプロパティを設定します。

fmmodulator = comm.FMModulator( ...
    'SampleRate',fs, ...
    'FrequencyDeviation',fd);
fmdemodulator = comm.FMDemodulator(fmmodulator);

信号を FM 変調し、複素信号の実数部をプロットします。変調された信号の周波数は、入力信号の振幅によって変化します。

y = fmmodulator(x);
plot(t,[x real(y)])
title('Input Sinusoid and FM-Modulated Signals')
xlabel('Time (seconds)'); ylabel('Amplitude')
legend('Input signal','Modulated signal (real component)')

Figure contains an axes object. The axes object with title Input Sinusoid and FM-Modulated Signals contains 2 objects of type line. These objects represent Input signal, Modulated signal (real component).

FM 変調された信号を復調します。

z = fmdemodulator(y);

元の信号と復調した信号をプロットします。復調器の出力信号は、元の信号と完全に一致します。

plot(t,x,'r',t,z,'ks')
legend('Original signal','Demodulated signal')
xlabel('Time (s)')
ylabel('Amplitude')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Original signal, Demodulated signal.

アルゴリズム

周波数変調された通過帯域信号 Y(t) は、

Y(t)=Acos(2πfct+2πfΔ0tx(τ)dτ),

として与えられます。ここで、

  • A は搬送波振幅です。

  • fc は搬送周波数です。

  • x(τ) はベースバンド入力信号です。

  • fΔ は Hz 単位の周波数偏差です。

|x(τ)| ≤ 1 と仮定した場合、周波数偏差は、fc からの単方向への最大シフト値になります。

ベースバンド FM 信号は、以下の条件を満たす fc で通過帯域信号をダウンコンバートすることによってパスバンド表現から導出できます。

ys(t)=Y(t)ej2πfct=A2[ej(2πfct+2πfΔ0tx(τ)dτ)+ej(2πfct+2πfΔ0tx(τ)dτ)]ej2πfct=A2[ej2πfΔ0tx(τ)dτ+ej4πfctj2πfΔ0tx(τ)dτ].

-2fc の成分を yS(t) から除去すると、次のように与えられるベースバンド信号表現 y(t) が残ります。

y(t)=A2ej2πfΔ0tx(τ)dτ.

y(t) の式は y(t)=A2ejϕ(t) と書き換えることができます。ここでは ϕ(t)=2πfΔ0tx(τ)dτ となります。y(t) をこのような式にすることで、入力信号が位相 ϕ(t) の導関数をスケーリングしたものであることを意味します。

入力信号を y(t) から復元するため、ベースバンド遅延復調器を次の図に示すように使用します。

Baseband FM demodulator

受信信号の遅延および共役の部分を信号自体から減算することで、次の式になります。

w(t)=A24ejϕ(t)ejϕ(tT)=A24ej[ϕ(t)ϕ(tT)],

ここで T はサンプル周期です。離散項では次のようになります。

wn=w(nT),wn=A24ej[ϕnϕn1], andvn=ϕnϕn1.

信号 vn は、vn ≈ xn を満たす ϕn の近似微分です。

参照

[1] Hatai, I., and I. Chakrabarti. “A New High-Performance Digital FM Modulator and Demodulator for Software-Defined Radio and Its FPGA Implementation.” International Journal of Reconfigurable Computing (December 25, 2011): 1-10. https://doi.org/10.1155/2011/342532.

[2] Taub, H., and D. Schilling. Principles of Communication Systems. McGraw-Hill Series in Electrical Engineering. New York: McGraw-Hill, 1971, pp. 142–155.

拡張機能

バージョン履歴

R2015a で導入