Skip to main content

MATLAB Code for Pulse Amplitude Modulation (PAM) and Demodulation


Pulse Amplitude Modulation (PAM) & Demodulation

Pulse Amplitude Modulation (PAM) & Demodulation of an Analog Message Signal

MATLAB Script

clc;
clear all;
close all;
fm = 10; % frequency of the message signal
fc = 100; % frequency of the carrier signal
fs = 1000 * fm; % sampling frequency (100 kHz)
t = 0:1/fs:1;
m = 1 * cos(2 * pi * fm * t);
c = 0.5 * square(2 * pi * fc * t) + 0.5;
s = m .* c;

subplot(4,1,1);
plot(t,m);
title('Message signal');
xlabel('Time');
ylabel('Amplitude');

subplot(4,1,2);
plot(t,c);
title('Carrier signal');
xlabel('Time');
ylabel('Amplitude');

subplot(4,1,3);
plot(t,s);
title('Modulated signal');
xlabel('Time');
ylabel('Amplitude');

% Demodulation
d = s .* c;
filter = fir1(200,fm/fs,'low');
original_t_signal = conv(filter,d);
t1 = 0:1/(length(original_t_signal)-1):1;

subplot(4,1,4);
plot(t1,original_t_signal);
title('Demodulated signal');
xlabel('Time');
ylabel('Amplitude');

web('https://www.salimwireless.com/search?q=pulse%20amplitude%20modulation', '-browser');

Output

PAM analog modulation MATLAB output

Another Code for Pulse Amplitude Modulation and Demodulation of an Analog Message Signal

MATLAB Script

clc;
clear;
close all;

% Parameters
messageFrequency = 2;
carrierFrequency = 20;
samplingFrequency = 1000;
duration = 1;
A = 1;

% Time vector
t = 0:1/samplingFrequency:duration;

% Message signal
messageSignal = A * sin(2 * pi * messageFrequency * t);

% Carrier signal
carrierSignal = A * square(2 * pi * carrierFrequency * t);

% PAM signal
pamSignal = messageSignal .* (carrierSignal > 0);

% Plotting
figure;
subplot(3,1,1); plot(t, messageSignal); title('Message Signal');
subplot(3,1,2); plot(t, carrierSignal); title('Carrier Signal');
subplot(3,1,3); plot(t, pamSignal); title('PAM Signal');

web('https://www.salimwireless.com/search?q=pulse%20amplitude%20modulation', '-browser');

Pulse Amplitude Modulation (PAM) & Demodulation for Digital Data

% The code is written by SalimWireless.Com
clc;
clear;
close all;

% Parameters
M = 8;
numSymbols = 100;
Fs = 1000;
T = 1;

% Generate random data
data = randi([0 M-1], 1, numSymbols);

% PAM Modulation
pamLevels = linspace(-M + 1, M - 1, M);
modulatedSignal = pamLevels(data + 1);

% Create time vector
t = 0:1/Fs:T*numSymbols-1/Fs;

% Upsample and create PAM signal
upsampledSignal = zeros(1, length(t));
for i = 1:numSymbols
    upsampledSignal((i-1)*Fs+1:i*Fs) = modulatedSignal(i);
end

% Add noise
snr = 20;
noisySignal = awgn(upsampledSignal, snr, 'measured');

% PAM Demodulation
receivedSymbols = noisySignal(1:Fs:end);
demodulatedData = zeros(1, numSymbols);
for i = 1:numSymbols
    [~, demodulatedData(i)] = min(abs(receivedSymbols(i) - pamLevels));
end

% Plotting
figure;
subplot(4,1,1); stem(data); title('Original Data');
subplot(4,1,2); plot(t, upsampledSignal); title('Transmitted PAM Signal');
subplot(4,1,3); plot(t, noisySignal); title('Received Noisy PAM Signal');
subplot(4,1,4); stem(demodulatedData); title('Demodulated Data');
grid on;

disp('Original Data:'); disp(data);
disp('Demodulated Data:'); disp(demodulatedData);

web('https://www.salimwireless.com/search?q=pulse%20amplitude%20modulation', '-browser');

Output

PAM digital modulation MATLAB output
Parameter PAM PWM PPM DM PCM
What is varied? Amplitude Width Position Delta (difference) Binary code
Pulse Width Constant Variable Constant Constant Constant
Noise Immunity Low Moderate High Moderate High
Bandwidth Low Medium High Low High
Complexity Simple Moderate Complex Simple Complex
MATLAB Code PAM Script PWM Script PPM Script DM Script PCM Script
Detailed Study PAM PWM PPM DM PCM

Simulation Results for Comparison of PAM, PWM, PPM, DM, and PCM

Message Signal Simulation
PWM Signal Simulation
PPM Signal Simulation
PCM Signal Simulation

Instructions for Pulse Amplitude Modulation (PAM)

  • Note: Use the input fields to enter the message frequency and the square pulse carrier frequency.
  • Step 1: Click the "Generate Message" button to generate the input message signal.
  • Step 2: Click the "Generate Carrier" button to generate the carrier signal. Carrier must be > Message.
  • Step 3: Click the "Generate PAM Signal" button to generate the Modulated signal.

PAM Modulation Control Center

Perform Pulse Amplitude Modulation by interacting with the signal generators below.

Ready for Signal Recovery?

After generating your PAM signal, proceed to the Demodulation section to recover the original message using a reconstruction filter.

Go to Demodulation

Instructions for Pulse Amplitude Demodulation

  • The reconstruction filter recovers the original message from the sampled PAM signal.
  • A low-pass filter (LPF) is used with a cutoff frequency at or above the message frequency.
  • Click 'Demodulate' to view the recovered baseband signal.

Technical Definition: PAM Signal

MATLAB Mathematical Representation Copy Snippet
% Ideal Sampling with Pulse Train t = 0:0.001:1; fm = 2; fc = 10; m_t = cos(2*pi*fm*t); c_t = square(2*pi*fc*t); s_pam = m_t .* (c_t > 0); % Low Pass Reconstruction [b,a] = butter(4, fm/(fs/2)); demod = filter(b,a, s_pam);

Advanced PAM Simulator (Try real signal)

Upload CSV, .wav, or .mp4


Generate CSV

Parameters

Actual Sample Rate (fs): -- Hz

By default, the test signal is 5 Hz, and the pusle carrier signal is 50 Hz.


On this page, you can test real signals just as you would in MATLAB. If you want to access basic signal processing simulations, you can visit the page below. In that page, you can generate CSV files for signals such as the message signal, modulated signal, and others. After generating the files, you can return to this page to analyze the signals.



Further Reading

  1. Pulse Amplitude Modulation and Demodulation theory
  2. Is PAM a Digital Modulation Technique ?
  3. Pulse Width Modulation (PWM) and Demodulation
  4. Pulse Position Modulation (PPM) and Demodulation
  5. Delta Modulation and demodulation
  6. Pulse Code Modulation (PCM)
  7. Quantization Signal to Noise Ration (Q-SNR)
  8. MATLAB Code for Pulse Width Modulation and Demodulation
  9. MATLAB Code for Pulse Position Modulation (PPM) and Demodulation
  10. MATLAB Code for Pulse Code Modulation (PCM) and demodulation


Contact Us

Name

Email *

Message *

Popular Posts

UGC NET Electronic Science Previous Year Question Papers with Solutions

Download Papers and Solutions Exam Pattern Preparation Tips FAQs More Home / Engineering & Other Exams / UGC NET 2026 PYQ ๐Ÿ“Š Exam Highlights: Electronic Science (88) Feature Details Junior Research Fellowship (JRF) ₹37,000 + HRA per month Eligibility M.Sc/M.Tech in Electronics (55%) Validity of Certificate JRF (3 Years) | Lectureship (Lifetime) ๐Ÿ“ฅ Download UGC NET Electronics PDFs Complete collection of previous year question papers, answer keys and explanations for Subject Code 88. Start Downloading ๐Ÿ“‚ View All Question Papers June 2026 - Question Paper Download PDF June 202...

Coherent vs. Non-Coherent Demodulation

  For demodulation In general: 1. Synchronous (coherent) demodulation Receiver generates a local carrier/oscillator . It combines/multiplies the received signal with that carrier. Then a filter extracts the message. Received signal ↓ × Local oscillator ↓ Low-pass filter ↓ Message So yes, carrier multiplication is a common implementation of synchronous demodulation . 2. Asynchronous (non-coherent) demodulation Receiver doesn't need a phase-synchronized local carrier . It uses properties of the received signal itself to recover the information. For ASK , an envelope detector is the classic example: ASK signal ↓ Diode + RC ↓ Envelope ↓ Comparator ↓ Data Modulation Synchronous demodulation Non-coherent/asynchronous demodulation ASK/OOK Local carrier + multiplier Envelope detector AM Product detector Envelope detector FSK Coherent correlator/mixer Frequency discriminator, filters, etc. PSK Local synchronized carrier + multiplier Differential/n...

CMOS Logic Gates: Inverter, NAND, and NOR

CMOS Logic Gates: Inverter, NAND, and NOR Complementary metal–oxide–semiconductor (CMOS) technology forms the backbone of modern digital IC design. Patented by Frank Wanlass in 1963 ( US patent 3,356,858 ), CMOS enables low-power, high-speed, and noise-immune logic circuits. CMOS gates, including inverters, NAND, and NOR, are widely used in both large-scale and small-scale integrated circuits due to their efficiency and versatility. CMOS Inverter A CMOS inverter consists of a complementary pair of PMOS and NMOS transistors. The PMOS transistor connects to the supply voltage V DD , while the NMOS connects to ground. The input voltage V IN controls both gates, and the output voltage V OUT is taken from the connected drains. CMOS inverters are highly energy-efficient and produce minimal heat due to their comple...

Online Simulator for Frequency Modulatiuon and Demodulation

FM Modulation Simulator Frequency Modulation (FM) In Frequency Modulation, the frequency of the carrier signal varies in accordance with the message signal's amplitude. s FM (t) = A c cos(ฯ‰ c t + k f ∫m(t)dt) where ฯ‰ = 2ฯ€f & k f = Frequency Sensitivity Modulation index, ฮฒ = (k f * A m ) / f m Change the parameter values to see the effect. Message Freq (Hz) 1 Carrier Freq (Hz) Message Amplitude (Am) Kf (sensitivity): 50 Perform FM Demodulation ๐Ÿงช Experiment for Students: ...

(Filters) Free MATLAB alternative for signal analysis

Advanced Signal Filters Upload CSV (1st Col) or Audio (WAV, MP3, etc.) Generate Messy Signal (20Hz + 50Hz + 150Hz) No Operation FFT (Spectrum) Amplitude Modulation (AM) Double Sideband Supressed Carrier (DSBSC) Pulse Amplitude Modulation (PAM) Flat Top PAM Filters - LPF, HPF, BPF, Notch Principal Component Analysis (PCA) Cross Spectrum Filter Type: Signal Cleaner ...

OFDM Symbols and Subcarriers Explained

This article explains how OFDM (Orthogonal Frequency Division Multiplexing) symbols and subcarriers work. It covers modulation, mapping symbols to subcarriers, subcarrier frequency spacing, IFFT synthesis, cyclic prefix, and transmission. Step 1: Modulation First, modulate the input bitstream. For example, with 16-QAM , each group of 4 bits maps to one QAM symbol. Suppose we generate a sequence of QAM symbols: s0, s1, s2, s3, s4, s5, …, s63 Step 2: Mapping Symbols to Subcarriers Assume N sub = 8 subcarriers. Each OFDM symbol in the frequency domain contains 8 QAM symbols (one per subcarrier): Mapping (example) OFDM symbol 1 → s0, s1, s2, s3, s4, s5, s6, s7 OFDM symbol 2 → s8, s9, s10, s11, s12, s13, s14, s15 … OFDM sym...

Interactive Sallen-Key filter Simulation (2nd order LPF)

  Sallen-Key Filter Explained: Why It’s the Most Popular Second-Order Low-Pass Filter Sallen-Key Filter Explained: Why It’s the Most Popular Second-Order Low-Pass Filter (With Math) If you're learning analog electronics, active filters, or preparing for engineering interviews and exams, you've probably come across the Sallen-Key filter . But what exactly is it, and why do engineers prefer it over simply cascading RC low-pass filters? Live Interactive Simulator Adjust the component values to see the real-time frequency response (Bode Plot). R1 (kฮฉ): 10 R2 (kฮฉ): 10 C1 (nF): 10 C2 (nF): 10 ...

Online Simulator for ASK, FSK, and PSK Signal Generation

Interactive Digital Signal Processing (DSP) Tutorial and Simulator for ASK, FSK, and BPSK modulation techniques. Try our new Digital Signal Processing Simulator!   •   Interactive ASK, FSK, and BPSK tools updated for 2025. Start Now Digital Modulation Visualizer: ASK, FSK, & BPSK Simulator Learn and visualize binary modulation techniques (ASK, FSK, BPSK) in real-time with adjustable carrier and sampling parameters. Perfect for DSP students and engineers. ๐Ÿ“ก ASK Simulator ๐Ÿ“ถ FSK Simulator ๐ŸŽš️ BPSK Simulator ๐Ÿ“š More Topics ASK Modulator FSK Modulator BPSK Modulator Demodulation More Topics 1. ASK (Ampli...