# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

# modulate

Modulation for communications simulation

## Syntax

```y = modulate(x,fc,fs,'method') y = modulate(x,fc,fs,'method',opt) [y,t] = modulate(x,fc,fs) ```

## Description

`y = modulate(x,fc,fs,'method')` and

`y = modulate(x,fc,fs,'method',opt)` modulate the real message signal `x` with a carrier frequency `fc` and sampling frequency `fs`, using one of the options listed below for `'method'`. Note that some methods accept an option, `opt`.

### Note

Use `modulate` and `demod` in the Signal Processing Toolbox™ with real-valued signals to obtain real-valued outputs. `modulate` and `demod` are not intended to accept complex-valued inputs or produce complex-valued outputs.

MethodDescription

`amdsb-sc`

or

`am`

Amplitude modulation, double sideband, suppressed carrier. Multiplies `x` by a sinusoid of frequency `fc`.

```y = x.*cos(2*pi*fc*t) ```

`amdsb-tc`

Amplitude modulation, double sideband, transmitted carrier. Subtracts scalar `opt` from `x` and multiplies the result by a sinusoid of frequency `fc`.

```y = (x-opt).*cos(2*pi*fc*t) ```

If the `opt` parameter is not present, `modulate` uses a default of `min(min(x))` so that the message signal `(x-opt)` is entirely nonnegative and has a minimum value of 0.

`amssb`

Amplitude modulation, single sideband. Multiplies `x` by a sinusoid of frequency `fc` and adds the result to the Hilbert transform of `x` multiplied by a phase shifted sinusoid of frequency `fc`.

```y = x.*cos(2*pi*fc*t)+imag(hilbert(x)).*sin(2*pi*fc*t) ```

This effectively removes the upper sideband.

`fm`

Frequency modulation. Creates a sinusoid with instantaneous frequency that varies with the message signal `x`.

`y = cos(2*pi*fc*t + opt*cumsum(x))`

`cumsum` is a rectangular approximation to the integral of `x`. `modulate` uses `opt` as the constant of frequency modulation. If `opt` is not present, `modulate` uses a default of

`opt = (fc/fs)*2*pi/(max(max(x)))`

so the maximum frequency excursion from `fc` is `fc` Hz.

`pm`

Phase modulation. Creates a sinusoid of frequency` fc` whose phase varies with the message signal `x`.

`y = cos(2*pi*fc*t + opt*x)`

`modulate` uses `opt` as the constant of phase modulation. If `opt` is not present, `modulate` uses a default of

`opt = pi/(max(max(x)))`

so the maximum phase excursion is π radians.

`pwm`

Pulse-width modulation. Creates a pulse-width modulated signal from the pulse widths in `x`. The elements of `x` must be between 0 and 1, specifying the width of each pulse in fractions of a period. The pulses start at the beginning of each period, that is, they are left justified.

`modulate(x,fc,fs,'pwm','centered')`

yields pulses centered at the beginning of each period.` y` is length` length(x)`*`fs/fc`.

`ppm`

Pulse-position modulation. Creates a pulse-position modulated signal from the pulse positions in `x`. The elements of `x` must be between 0 and 1, specifying the left edge of each pulse in fractions of a period. `opt` is a scalar between 0 and 1 that specifies the length of each pulse in fractions of a period. The default for `opt` is `0.1`. `y` is length `length(x)`*`fs/fc`.

`qam`

Quadrature amplitude modulation. Creates a quadrature amplitude modulated signal from signals `x` and `opt`.

`y = x.*cos(2*pi*fc*t) + opt.*sin(2*pi*fc*t)`

`opt` must be the same size as `x`.

If you do not specify `'method'`, then `modulate` assumes `am`. Except for the `pwm` and `ppm` cases, `y` is the same size as `x`.

If `x` is an array, `modulate` modulates its columns.

`[y,t] = modulate(x,fc,fs)` returns the internal time vector `t` that `modulate` uses in its computations.

## Examples

collapse all

Generate a 10 Hz sinusoidal signal sampled at a rate of 200 Hz for 1 second. Embed the sinusoid in white Gaussian noise of variance 0.01.

```fs = 200; t = 0:1/fs:1; x = sin(2*pi*10*t)+randn(size(t))/10;```

Frequency modulate the signal with a carrier frequency of 50 Hz. Compute the Welch power spectral density estimates of the original and modulated sequences. Use a 100-sample Hamming window with 80 samples of overlap. Specify an FFT length of 1024.

```y = modulate(x,50,fs); pwelch([x;y]',hamming(100),80,1024,fs,'centered')```

Single-sideband amplitude modulate the signal with the same carrier frequency. Compute and display the new Welch PSD estimates.

```y = modulate(x,50,fs,'amssb'); pwelch([x;y]',hamming(100),80,1024,fs,'centered')```