Main Content

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

アナログ ベースバンド変調の例

これらの例では、アナログ ベースバンドの変調と復調の基本的なワークフローを示します。例の要素は、他のアナログ変調方式にも同様に適用されます。

メモ

Communications Toolbox™ のアナログ変調 Simulink® ブロックは、サンプルベースのスカラー信号のみを処理します。アナログ変調器およびアナログ復調器は、実数値の入力信号を受け取り、実数値の出力信号を返します。アナログ復調器ブロックは、離散時間の (連続時間ではない) 出力を返します。

FM 方式を使用した正弦波信号の変調および復調

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

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

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 ブロードキャスト方式を使用したストリーミング オーディオ信号の変調および復調

FM ブロードキャスト変調器 System object および FM ブロードキャスト復調器 System object を使用して、オーディオ信号を変調および復調します。周波数応答をプロットして、入力オーディオ信号と復調されたオーディオ信号を比較します。

オーディオ ファイル guitartune.wav を読み込むには、オーディオ ファイル リーダー System object™ を使用します。フレームあたりのサンプル数を 44,100 (オーディオ ファイル全体が入る大きさ) に設定します。

audiofilereader = dsp.AudioFileReader("guitartune.wav", ...
    SamplesPerFrame=44100);
x = audiofilereader();

スペクトル アナライザー System object を作成し、変調した信号と復調した信号のスペクトルをプロットします。

saFM = spectrumAnalyzer( ...
    SampleRate=152e3, ...
    Title="FM Broadcast Signal");
saAudio = spectrumAnalyzer( ...
    SampleRate=44100, ...
    ShowLegend=true, ...
    Title="Audio Signal", ...
    ChannelNames=["Input signal" "Demodulated signal"]);

FM ブロードキャスト変調器オブジェクトと FM ブロードキャスト復調器オブジェクトを作成します。入力オーディオ信号のサンプル レートと一致するように、出力オーディオ信号のサンプル レートを設定します。指定された変調器と一致するように復調器を構成します。

fmbMod = comm.FMBroadcastModulator( ...
    AudioSampleRate=audiofilereader.SampleRate, ...
    SampleRate=200e3);
fmbDemod = comm.FMBroadcastDemodulator(fmbMod)
fmbDemod = 
  comm.FMBroadcastDemodulator with properties:

            SampleRate: 200000
    FrequencyDeviation: 75000
    FilterTimeConstant: 7.5000e-05
       AudioSampleRate: 44100
             PlaySound: false
                Stereo: false
                  RBDS: false

オブジェクトへのシーケンス入力の長さは、間引き係数の整数倍でなければなりません。変調器と復調器のフィルターのオーディオ間引き係数を決定するには、オブジェクト関数infoを使用します。

info(fmbMod)
ans = struct with fields:
       AudioDecimationFactor: 441
    AudioInterpolationFactor: 2000
        RBDSDecimationFactor: 19
     RBDSInterpolationFactor: 320

info(fmbDemod)
ans = struct with fields:
       AudioDecimationFactor: 50
    AudioInterpolationFactor: 57
        RBDSDecimationFactor: 50
     RBDSInterpolationFactor: 57

変調器のオーディオ間引き係数は、オーディオ フレーム長 44,100 の倍数です。復調器のオーディオ間引き係数は、変調器出力の 200,000 サンプル データ シーケンス長の整数倍です。

オーディオ信号を変調し、変調した信号のスペクトルをプロットします。

y = fmbMod(x);
saFM(y)

変調したオーディオ信号を復調し、結果のスペクトルをプロットします。入力信号のスペクトルを復調された信号のスペクトルと比較します。これらのスペクトルは似ていますが、復調された信号の高周波数成分の方が小さい点が異なります。

z = fmbDemod(y);
saAudio([x z])

Simulink での FM 信号の変調と復調

FM Modulator Baseband ブロックと FM Demodulator Baseband ブロックを使用して正弦波信号を変調および復調します。

fmmoddemod モデルは、周波数 4 Hz、振幅 1 V の正弦波を生成します。FM Modulator Baseband ブロックは、周波数偏差を 50 Hz に設定します。

変調信号スコープは、変調器出力の周波数 Mod Sig が入力データの振幅によって変化することを示しています。

復調信号スコープは、復調器の出力 Demod Sig が入力データと完全に整合することを示しています。