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

Constellation Diagram of FSK in Detail

📘 Overview 🧮 Simulator for constellation diagram of FSK 🧮 Theory 🧮 MATLAB Code 📚 Further Reading 📚 BER vs SNR from Constellation   Binary bits '0' and '1' can be mapped to 'j' and '1' to '1', respectively, for Baseband Binary Frequency Shift Keying (BFSK) . Signals are in phase here. These bits can be mapped into baseband representation for a number of uses, including power spectral density (PSD) calculations. For passband BFSK transmission, we can modulate signal 'j' with a lower carrier frequency and signal '1' with a higher carrier frequency while transmitting over a wireless channel. Let's assume we are transmitting carrier signal fc1 for the transmission of binary bit '1' and carrier signal fc2 for the transmission of binary bit '0'. Simulator for 2-FSK Constellation Diagram Simulator for 2-FSK Constellation Diagram ...

UGC NET Electronic Science Previous Year Question Papers with Solutions

Home / Engineering & Other Exams / UGC NET 2026 PYQ ⬇️ Download Papers and Solutions 📋 Exam Pattern 💡 Preparation Tips ❓ FAQs 📊 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 2025 - Question Paper Download PDF June 2025 - Solved Paper + Explanation ...

FM Bandwidth and FM Band Explained

FM radio uses the frequency band from 88 MHz to 108 MHz , which is a 20 MHz-wide spectrum . This is the range of carrier frequencies available to stations. 108 MHz − 88 MHz = 20 MHz However, a single FM station occupies only about 200 kHz . This is the bandwidth of the modulated FM signal. 1. Why One FM Station Needs ~200 kHz FM uses frequency modulation . The bandwidth depends on how far the carrier swings. Carson's Rule gives the approximate FM bandwidth: B = 2 ( Δf + f m ) ...

BER vs SNR for M-ary QAM, M-ary PSK, QPSK, BPSK, ...(MATLAB Code + Simulator)

Bit Error Rate (BER) & SNR Guide Analyze communication system performance with our interactive simulators and MATLAB tools. 📘 Theory 🧮 Simulators 💻 MATLAB Code 📚 Resources BER Definition SNR Formula BER Calculator MATLAB Comparison 📂 Explore M-ary QAM, PSK, and QPSK Topics ▼ 🧮 Constellation Simulator: M-ary QAM 🧮 Constellation Simulator: M-ary PSK 🧮 BER calculation for ASK, FSK, and PSK 🧮 Approaches to BER vs SNR What is Bit Error Rate (BER)? The BER indicates how many corrupted bits are received compared to the total number of bits sent. It is the primary figure of merit f...

Coherence Bandwidth and Coherence Time (with MATLAB + Simulator)

🧮 Coherence Bandwidth 🧮 Coherence Time 🧮 MATLAB Code s 📚 Further Reading For Doppler Delay or Multi-path Delay Coherence time T coh ∝ 1 / v max (For slow fading, coherence time T coh is greater than the signaling interval.) Coherence bandwidth W coh ∝ 1 / Ï„ max (For frequency-flat fading, coherence bandwidth W coh is greater than the signaling bandwidth.) Where: T coh = coherence time W coh = coherence bandwidth v max = maximum Doppler frequency (or maximum Doppler shift) Ï„ max = maximum excess delay (maximum time delay spread) Notes: The notation v max −1 and Ï„ max −1 indicate inverse proportionality. Doppler spread refers to the range of frequency shifts caused by relative motion, determining T coh . Delay spread (or multipath delay spread) determines W coh . Frequency-flat fading occurs when W coh is greater than the signaling bandwidth. Coherence Bandwidth Coherence bandwidth is...

Intel 8086 Transistor Count: Architecture, Specifications, and Comparison with Other Microprocessors

Intel 8086 Transistor Count: Architecture, Specifications, and Comparison with Other Microprocessors Intel 8086 Transistor Count: Complete Guide with Architecture and Processor Comparison The Intel 8086 microprocessor is one of the most important processors in computer history. Released in 1978 , it introduced the x86 architecture that still influences modern CPUs. One of the most frequently asked questions in computer architecture and microprocessor courses is: How many transistors are present in the Intel 8086? The commonly accepted answer is approximately 29,000 transistors . However, reverse-engineering studies have shown that the actual number of physical transistors is closer to 19,618 , while Intel's published figure includes programmable transistor locations used in ROM and PLA structures. Intel 8086 Transistor Count Metric Value Published transistor count ~29,000 Physical transistor count ~19,618 Release year 1978 Word ...

Online Simulator for ASK, FSK, and PSK

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 More Topics 1. ASK (Amplitude Shift Keying) Simulat...