メインコンテンツ

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

comm.FMDemodulator

R2026a

ベースバンド FM 信号の復調

説明

comm.FMDemodulator System object™ は、ベースバンド FM 信号を復調します。

ベースバンド FM 信号を復調するには、次のようにします。

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

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

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

作成

説明

fmdemodulator = comm.FMDemodulator は、FM 復調器 System object を作成します。

例

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

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

例

プロパティ

すべて展開する

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

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

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

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

データ型: double

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

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

データ型: double

使用法

説明

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

例

入力引数

すべて展開する

ベースバンド FM 信号。スカラーまたは列ベクトルとして指定します。

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

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

出力引数

すべて展開する

メッセージ データ。入力 insig と同じデータ型およびサイズのスカラーまたは列ベクトルとして返されます。

オブジェクト関数

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

release(obj)

すべて展開する

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

例

すべて折りたたむ

ストリーミング モードでデータを処理する System objects を使用して FM 変調および復調を適用した後に、オーディオ ファイルを再生します。

オーディオ ファイル guitartune.wav を読み込むには、オーディオ ファイル リーダー System object™ を使用します。

audiofilereader = dsp.AudioFileReader('guitartune.wav', ...
    'SamplesPerFrame',4410);

オーディオ再生のためのオーディオ デバイス ライター System object を作成します。

audioplayer = audioDeviceWriter;

既定の FM 変調器および復調器 System object を作成します。

fmmod = comm.FMModulator;
fmdemod = comm.FMDemodulator;

オーディオ データを読み取って FM 変調し、FM 変調された信号を FM 復調して、復調された信号を再生します (z)。

while ~isDone(audiofilereader)
    x = audiofilereader();
    y = fmmod(x);
    z = fmdemod(y);
    audioplayer(z);
end

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

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

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.

FM 変調器 System object™ から FM 復調器 System object を作成します。ファイルから読み込んだオーディオ データを変調および復調し、復調されたデータと入力データのスペクトルを比較します。

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

fd = 50e3;  % Frequency deviation (Hz)
fs = 300e3; % Sample rate (Hz)

FM 変調器 System object を作成します。

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

変調器 System object を使用して構成することにより、FM 復調器 System object を作成します。

demod = comm.FMDemodulator(mod);

2 つの System object でプロパティが同一であることを確認します。

mod
mod = 
  comm.FMModulator with properties:

            SampleRate: 300000
    FrequencyDeviation: 50000

demod
demod = 
  comm.FMDemodulator with properties:

            SampleRate: 300000
    FrequencyDeviation: 50000

オーディオ データをワークスペースに読み込みます。

S = load("handel.mat");
data = S.y;
fsamp = S.Fs;

スペクトル アナライザー System object を作成します。

sa = spectrumAnalyzer( ...
    SampleRate=fsamp, ...
    ShowLegend=true);

オーディオ データを FM 変調および復調します。

modData = mod(data);
demodData = demod(modData);

入力データ (Channel 1) のスペクトル プロットが、復調されたデータ (Channel 2) のスペクトル プロットと一致していることを確認します。

sa([data demodData])
release(sa)

アルゴリズム

周波数変調された通過帯域信号 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

参照

[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 で導入