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...

GMSK BER vs SNR (with Simulation)

  GMSK Performance: Why the BER vs. SNR Curve Matters If you’ve ever wondered why GMSK (Gaussian Minimum Shift Keying) became the backbone of the global GSM revolution, the answer lies in its unique balance of spectral efficiency and power performance. But there is no free lunch in engineering. To get that sleek, narrow spectrum, you have to pay a price in Bit Error Rate (BER) . In this guide, we break down the theoretical BER vs. SNR performance of GMSK, the "magic" of the BT product, and how to optimize your link budget for real-world conditions. What is GMSK and Why Should You Care? GMSK is a derivative of MSK (Minimum Shift Keying) that uses a Gaussian pre-modulation filter. This filter "smooths" the phase transitions, significantly reducing sideband power. The result? A constant envelope signal that allows you to use high-efficiency Class-C amplifiers without distorting the signal. This is the secr...

The output voltage V0 (in Volt) for the network given in the Figure is ___

  Find the Output Voltage V o Solve the given circuit using Kirchhoff's Current Law (KCL), Ohm's law, and the supernode method. 1. Given Circuit Parameters Current source 1 mA Resistors 1 kΩ Each resistor Voltage source 6 V Required V o 2. Understand the Circuit The circuit contains a 1 mA current source, four 1 kΩ resistors, and a 6 V source connected between the two midpoint nodes. The output voltage is measured between the top and bottom rails. Reference node Take the bottom rail as ground: 0 V . Let the top rail voltage be V T , and...

What is a Supernode?

  Circuit Analysis What Is a Supernode? A supernode is formed when an ideal voltage source connects two non-reference nodes. It allows us to apply Kirchhoff's Current Law (KCL) to the combined circuit boundary. 1. Understanding a Supernode In nodal analysis, a voltage source between two unknown-voltage nodes makes the current through that source difficult to express directly using Ohm's law. We combine the two nodes and the voltage source into one extended region called a supernode. Key idea Apply KCL around the outer boundary of the supernode, then use the voltage source to write an additional voltage equation. 2. Supernode Circuit Diagram The voltage source connects nodes V L an...

The cutoff frequency (in GHz) for the dominant TE10 mode of an air-filled rectangular waveguide of ...

  Q. The cutoff frequency (in GHz) for the dominant TE10 mode of an air-filled rectangular waveguide of inner dimension 0.28 inch×0.14 inch is __. (rounded off to two decimal places). Given Information Waveguide dimensions = 0.28 inch × 0.14 inch Wider dimension (a) = 0.28 inch Smaller dimension (b) = 0.14 inch Medium = Air Dominant mode = TE 10 Speed of light (c) = 3 × 10 8 m/s Step 1: Cutoff Frequency Formula The cutoff frequency of a rectangular waveguide is: f c = (c / 2) √[(m/a) 2 + (n/b) 2 ] For the dominant TE 10 mode: m = 1, n = 0 f c = c / 2a Step 2: Convert Inch into Meter We know that 1 inch = 0.0254 meter. a = 0.28 × 0.0254 a = 0.007112 m ...

A binary ripple counter is designed to count (0)₁₀ to (64)₁₀. Which of the following is/are the number of flip-flops required ...

  Q. A binary ripple counter is designed to count  (0)₁₀ to (64)₁₀ . Which of the following is/are the number of flip-flops required to design the counter?   (A) 6 (B) 7 (C) 4 (D) 5 Solution A binary ripple counter must count from (0)₁₀ to (64)₁₀ , including both endpoints. Step 1: Calculate the total number of states Since both 0 and 64 are included, add 1 to the difference: N = Last value − First value + 1 N = 64 − 0 + 1 = 65 states The counter visits every integer from 0 through 64: 0, 1, 2, 3, ..., 63, 64 There are 65 distinct states in total. Step 2: Calculate the number of flip-flops Each flip-flop stores one bit. With n flip-flops, the counter can represent 2ⁿ distinct states. 2⁶ = 64 states (not enough) 2⁷ = 128 states (eno...

SRAM, DRAM, EPROM, MRAM, and DDRAM Explained

Computer Fundamentals Types of Memory and Their Technologies Understand the fundamental relationship between different types of computer memory and the technologies used to implement them. Fundamental Matching Memory type, technology, and key characteristics Memory Type Technology Key Characteristic Cache Memory SRAM Very fast; stores frequently accessed data Main Memory DRAM Holds programs and data currently in use Au...

Parametric Down-Conversion of Photons

  Nonlinear Optics One incoming photon is converted into two lower-energy photons, typically in a nonlinear optical medium. Energy is conserved: E in = E 1 + E 2 E in ​ = E 1 ​ + E 2 ​ . Parametric Down-Conversion A nonlinear optical process in which one pump photon is converted into two lower-energy photons, known as the signal and idler photons. 1 Energy Conservation The energy of the pump photon equals the sum of the energies of the signal and idler photons. \[ \boxed{\hbar\omega_p=\hbar\omega_s+\hbar\omega_i} \] \[ \boxed{\omega_p=\omega_s+\omega_i} \] ωₚ Pump angular frequency ...