Modulate using FM method
object™ applies FM modulation to an input signal.
To FM modulate a signal:
Starting in R2016b, instead of using the
to perform the operation defined by the System
object™, you can
call the object with arguments, as if it were a function. For example,
= step(obj,x) and
y = obj(x) perform
H = comm.FMModulator creates a modulator System
that frequency modulates an input signal.
H = comm.FMModulator(demod) creates an
FM modulator object whose properties are determined by the corresponding
FM demodulator object,
H = comm.FMModulator( creates
an FM modulator object with each specified property
to the specified
appear inside single quotes. You can specify additional name-value
pair arguments in any order as (
Peak deviation of the output signal frequency (Hz)
Specify the frequency deviation of the FM modulator in Hz as
a positive real scalar. The default value is
Sample rate of the input signal (Hz)
Specify the sample rate in Hz as a positive real scalar. The
default value is
|reset||Reset states of the FM modulator object|
|step||Applies FM baseband modulation|
Apply baseband modulation to a sine wave input signal and plot its response.
Set the example parameters.
fs = 1e3; % Sample rate (Hz) ts = 1/fs; % Sample period (s) fd = 50; % Frequency deviation (Hz)
Create a sinusoidal input signal with duration 0.5s and frequency 4 Hz.
t = (0:ts:0.5-ts)'; x = sin(2*pi*4*t);
Create an FM modulator System object™.
MOD = comm.FMModulator('SampleRate',fs,'FrequencyDeviation',fd);
FM modulate the input signal and plot its real part. You can see that the frequency of the modulated signal changes with the amplitude of the input signal.
y = step(MOD,x); plot(t,[x real(y)])
Apply FM baseband modulation to a white Gaussian noise source and plot its spectrum.
Set the example parameters.
fs = 1e3; % Sample rate (Hz) ts = 1/fs; % Sample period (s) fd = 10; % Frequency deviation (Hz)
Create a white Guassian noise source having a duration of 5s.
t = (0:ts:5-ts)'; x = wgn(length(t),1,0);
Create an FM modulator System object™ and modulate the input signal.
MOD1 = comm.FMModulator('SampleRate',fs,'FrequencyDeviation',fd); y = step(MOD1,x);
Create another modulator object,
MOD2, whose frequency deviation is five times larger and apply FM modulation.
MOD2 = comm.FMModulator('SampleRate',fs,'FrequencyDeviation',5*fd); z = step(MOD2,x);
Plot the spectra of the two modulated signals. The larger frequency deviation associated with channel 2 results in a noise level that is 10 dB higher.
SA = dsp.SpectrumAnalyzer('SampleRate',fs,'ShowLegend',true); step(SA,[y z])
You can represent a standard frequency modulated passband signal, Y(t), as
A baseband FM signal can be derived from the passband representation by downconverting it by fc such that
The expression for y(t) is rewritten as
A baseband delay demodulator is used to recover the input signal from y(t).
A delayed and conjugated copy of the received signal is subtracted from the signal itself.
 Chakrabarti, I. H., and Hatai, I. “A New High-Performance Digital FM Modulator and Demodulator for Software-Defined Radio and Its FPGA Implementation.” International Journal of Reconfigurable Computing. Vol. 2011, No. 10.1155/2011, 2011, p. 10.
 Taub, Herbert, and Donald L. Schilling. Principles of Communication Systems. New York: McGraw-Hill, 1971, pp. 142–155.
Usage notes and limitations:
See System Objects in MATLAB Code Generation (MATLAB Coder).