メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

comm.FMModulator

R2026a

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 信号を出力します。

例

入力引数

すべて展開する

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

このオブジェクトは可変サイズの入力を受け入れます。オブジェクトがロックされた後は、シミュレーション中に信号のフレーム サイズ (行数) を変更できますが、チャネル数 (列数) は一定のままでなければなりません。詳細については、Variable-Size Signals in Codeを参照してください。

データ型: 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 = spectrumAnalyzer(SampleRate=fs,ShowLegend=true);
specanalyzer([y1 y2])
release(specanalyzer)

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

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

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, xlabel Time (seconds), ylabel Amplitude 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 with xlabel Time (s), ylabel Amplitude contains 2 objects of type line. One or more of the lines displays its values using only markers 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)e−j2πfct=A2[ej(2πfct+2πfΔ∫0tx(τ)dτ)+e−j(2πfct+2πfΔ∫0tx(τ)dτ)]e−j2πfct=A2[ej2πfΔ∫0tx(τ)dτ+e−j4πfct−j2π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)e−jϕ(t−T)=A24ej[ϕ(t)−ϕ(t−T)] ,

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

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

信号 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, 142–55. New York: McGraw-Hill, 1971.

拡張機能

すべて展開する

バージョン履歴

R2015a で導入