Demodulation for communications simulation - MATLAB demod (2024)

Demodulation for communications simulation

collapse all in page

Syntax

x = demod(y,fc,fs,method)

x = demod(y,fc,fs,method,opt)

Description

example

x = demod(y,fc,fs,method) demodulates the real carrier signal y with a carrier frequency fc and sample rate fs using the method specified in method.

x = demod(y,fc,fs,method,opt) demodulates the real carrier signal y using the additional options specified in opt.

Examples

collapse all

Frequency Modulation and Demodulation

Open Live Script

Generate a 150 Hz sinusoid sampled at 8 kHz for 1 second. Embed the modulated signal in white Gaussian noise of variance 0.1².

fs = 8e3;t = 0:1/fs:1-1/fs;s = cos(2*pi*150*t) + randn(size(t))/10;

Frequency modulate the signal at a carrier frequency of 3 kHz using a modulation constant of 0.1.

Frequency demodulate the signal using the same carrier frequency and modulation constant. Compute and plot power spectrum estimates for the transmitted, received, and demodulated signals.

y = demod(rx,fc,fs,'fm',0.1);pspectrum([s;rx;y]',fs,'Leakage',0.85)legend('Transmitted signal','Received signal','Demodulated signal','Location','best')

Demodulation for communications simulation - MATLAB demod (1)

Input Arguments

collapse all

yModulated signal
real vector | real matrix

Modulated message signal, specified as a real vector or matrix. Except for the methods pwm and ppm, y is the same size as x.

fcCarrier frequency
real positive scalar

Carrier frequency used to modulate the message signal, specified as a real positive scalar.

fsSample rate
real positive scalar

Sample rate, specified as a real positive scalar.

methodMethod of modulation used
'am' (default) | 'amdsb-tc' | 'amssb' | 'fm' | 'pm' | 'pwm' | 'ppm' | 'qam'

Method of modulation used, specified as one of:

  • am or amdsb-sc — Amplitude demodulation, double sideband, suppressed carrier. Multiplies y by a sinusoid of frequency fc and applies a fifth-order Butterworth lowpass filter using filtfilt.

    x = y.*cos(2*pi*fc*t);[b,a] = butter(5,fc*2/fs);x = filtfilt(b,a,x);
  • amdsb-tc — Amplitude demodulation, double sideband, transmitted carrier. Multiplies y by a sinusoid of frequency fc and applies a fifth-order Butterworth lowpass filter using filtfilt.

    x = y.*cos(2*pi*fc*t);[b,a] = butter(5,fc*2/fs);x = filtfilt(b,a,x);

    If you specify opt, demod subtracts scalar opt from x. The default value for opt is 0.

  • amssb — Amplitude demodulation, single sideband. Multiplies y by a sinusoid of frequency fc and applies a fifth-order Butterworth lowpass filter using filtfilt..

    x = y.*cos(2*pi*fc*t);[b,a] = butter(5,fc*2/fs);x = filtfilt(b,a,x);
  • fm — Frequency demodulation. Demodulates the FM waveform by modulating the Hilbert transform of y by a complex exponential of frequency -fcHz and obtains the instantaneous frequency of the result..

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

    c*msum is a rectangular approximation of the integral of x. modulate uses opt as the constant of frequency modulation. If you do not specify the opt parameter, modulate uses a default of opt=(fc/fs)*2*pi/(max(max(x))) so the maximum frequency excursion from fc is fcHz.

  • pm — Phase demodulation. Demodulates the PM waveform by modulating the Hilbert transform of y by a complex exponential of frequency -fcHz and obtains the instantaneous phase of the result.

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

    modulate uses opt as the constant of phase modulation. If you do not specify the opt parameter, modulate uses a default of opt=pi/(max(max(x))) so the maximum phase excursion is π radians.

  • pwm — Pulse-width demodulation. Finds the pulse widths of a pulse-width modulated signal y. demod returns in x a vector whose elements specify the width of each pulse in fractions of a period. The pulses in y should start at the beginning of each carrier period, that is, they should be left justified. modulate(x,fc,fs,'pwm','centered') yields pulses centered at the beginning of each period. The length of y is length(x)*fs/fc.

  • ppm — Pulse-position demodulation. Finds the pulse positions of a pulse-position modulated signal y. For correct demodulation, the pulses cannot overlap. x is length length(t)*fc/fs.

  • qam— Quadrature amplitude demodulation. [x1,x2] = demod(y,fc,fs,'qam') multiplies y by a cosine and a sine of frequency fc and applies a fifth-order Butterworth lowpass filter using filtfilt.

    x1 = y.*cos(2*pi*fc*t);x2 = y.*sin(2*pi*fc*t);[b,a] = butter(5,fc*2/fs);x1 = filtfilt(b,a,x1);x2 = filtfilt(b,a,x2);

    The input argument opt must be the same size as y.

optOptional input for some methods
real vector

Optional input, specified for some methods. Refer to method for more details on how to use opt.

Output Arguments

collapse all

x — Demodulated message signal
real vector | real matrix

Demodulated message signal, returned as a real vector or matrix.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced before R2006a

expand all

The demod function supports C/C++ code generation. You must have MATLAB® Coder™ to use this functionality.

See Also

modulate | vco | fskdemod (Communications Toolbox) | genqamdemod (Communications Toolbox) | mskdemod (Communications Toolbox) | pamdemod (Communications Toolbox) | pmdemod (Communications Toolbox) | qamdemod (Communications Toolbox)

MATLAB Command

You clicked a link that corresponds to this MATLAB command:

 

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Demodulation for communications simulation - MATLAB demod (2)

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list:

Americas

  • América Latina (Español)
  • Canada (English)
  • United States (English)

Europe

  • Belgium (English)
  • Denmark (English)
  • Deutschland (Deutsch)
  • España (Español)
  • Finland (English)
  • France (Français)
  • Ireland (English)
  • Italia (Italiano)
  • Luxembourg (English)
  • Netherlands (English)
  • Norway (English)
  • Österreich (Deutsch)
  • Portugal (English)
  • Sweden (English)
  • Switzerland
    • Deutsch
    • English
    • Français
  • United Kingdom (English)

Asia Pacific

  • Australia (English)
  • India (English)
  • New Zealand (English)
  • 中国
  • 日本 (日本語)
  • 한국 (한국어)

Contact your local office

Demodulation for communications simulation - MATLAB demod (2024)
Top Articles
Latest Posts
Article information

Author: Geoffrey Lueilwitz

Last Updated:

Views: 5927

Rating: 5 / 5 (60 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Geoffrey Lueilwitz

Birthday: 1997-03-23

Address: 74183 Thomas Course, Port Micheal, OK 55446-1529

Phone: +13408645881558

Job: Global Representative

Hobby: Sailing, Vehicle restoration, Rowing, Ghost hunting, Scrapbooking, Rugby, Board sports

Introduction: My name is Geoffrey Lueilwitz, I am a zealous, encouraging, sparkling, enchanting, graceful, faithful, nice person who loves writing and wants to share my knowledge and understanding with you.