Skip to main content

MATLAB code for Pulse Code Modulation (PCM) and Demodulation


MATLAB Code for Pulse Code Modulation

MATLAB Source Code
clc;
close all;
clear all;

fm=input('Enter the message frequency (in Hz): ');
fs=input('Enter the sampling frequency (in Hz): ');
L=input('Enter the number of the quantization levels: ');

n = log2(L);

t=0:1/fs:1; % fs nuber of samples have tobe selected

s=8*sin(2*pi*fm*t);
subplot(3,1,1);
t=0:1/(length(s)-1):1;
plot(t,s);
title('Analog Signal');
ylabel('Amplitude--->');
xlabel('Time--->');
subplot(3,1,2);
stem(t,s);grid on; title('Sampled Sinal'); ylabel('Amplitude--->'); xlabel('Time--->');
 
 % Quantization Process
 vmax=8;
 vmin=-vmax; %to quantize a signal s into L levels between vmin and vmax
 del=(vmax-vmin)/L;
 part=vmin:del:vmax; % level are between vmin and vmax with difference of del
 code=vmin-(del/2):del:vmax+(del/2); % Contaion Quantized valuses 
 [ind,q]=quantiz(s,part,code); % Quantization process
 % ind contain index number and q contain quantized values
 l1=length(ind);
 l2=length(q);
 
 for i=1:l1
 if(ind(i)~=0) % To make index as binary decimal so started from 0 to N
 ind(i)=ind(i)-1;
 end 
 i=i+1;
 end 
 for i=1:l2
 if(q(i)==vmin-(del/2)) % To make quantize value inbetween the levels
 q(i)=vmin+(del/2);
 end
 end 
 subplot(3,1,3);
 stem(t,q);grid on; % Display the Quantize values
 title('Quantized Signal');
 ylabel('Amplitude--->');
 xlabel('Time--->');
 
 % Encoding Process
 figure
 code=de2bi(ind,'left-msb'); % Cnvert the decimal to binary
 k=1;
for i=1:l1
 for j=1:n
 coded(k)=code(i,j); % convert code matrix to a coded row vector
 j=j+1;
 k=k+1;
 end
 i=i+1;
end
 subplot(2,1,1); grid on;
 stairs(coded); % Display the encoded signal
axis([0 100 -2 3]); title('Encoded Signal');
 ylabel('Amplitude--->');
 
 % Demodulation Of PCM signal
 
 qunt=reshape(coded,n,length(coded)/n);
 index=bi2de(qunt','left-msb'); % Getback the index in decimal form
 q=del*index+vmin+(del/2); % getback Quantized values
 subplot(2,1,2); grid on;
 plot(t,q);
 title('demodulated signal without low-pass filter');



% % % Demodulation after applying low-pass filter


figure()
% Low-pass Filter Design
fc = fm; % Cutoff frequency for the low-pass filter
order = 1; % Filter order (first-order Butterworth filter)

% Design the low-pass Butterworth filter
[b, a] = butter(order, fc/(fs/2), 'low');

% Apply the low-pass filter to the signal
filtered_signal = filtfilt(b, a, q);
plot(t,s);
title('demodulated signal after applying low-pass filter') 

Program Output & Results

Enter the message frequency (in Hz): 1
Enter the sampling frequency (in Hz): 10000
Enter the number of the quantization levels: 8
>>

Explore Pulse Modulation Techniques

Access our comprehensive dashboard for more simulators and technical explanations.

PCM Online Simulator › Pulse Modulation Home Page ›


Contact Us

Name

Email *

Message *

Popular Posts

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

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

Flat vs Frequency Selective Online Simulator

Flat vs Frequency Selective Online Simulator Channel Type Without Fading Flat Fading Multipaths Nakagami m SNR(dB) Run Simulation Input Signal Signal After Fading Constellation Diagram BER vs SNR Explore Advanced Flat vs Frequency-Selective Fading Simulator Want to see these equations in action? Visualize it. Launch Simulator Tool Interactive Rayleigh Fading Simulator Want to see Rayleigh fading in action? Visualize it. Launch Simulator Tool Return to DSP Simulations Main Page →

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

Theoretical BER vs SNR for binary ASK, FSK, and PSK (with MATLAB Code + Simulator)

📘 Overview & Theory 🧮 MATLAB Codes 🧮 Q-function 📚 Further Reading Bit Error Rate (BER) Equations In ASK, noise directly affects the signal amplitude, making it the most vulnerable since the data is carried in amplitude changes. In FSK, data is represented by frequency variations, and because noise typically impacts amplitude more than frequency, FSK is more robust than ASK. In PSK, data is encoded in the signal phase, and BPSK specifically uses 180-degree phase shifts, creating the greatest separation between signal points and therefore achieving the lowest bit error rate (BER) for the same power level. BER formulas for ASK, FSK, and PSK modulation schemes. ASK BER = 0.5 × erfc(0.5 × √SNR) FSK BER = 0.5 × erfc(√(SNR / 2)) PSK BER = 0.5 × erfc(√SNR) ...

AM Modulation Online Simulator

Amplitude Modulation Simulator s AM (t) = A c [1 + k a m(t)] cos(ω c t) where, ω = 2Ï€f & k a = Amplitude Sensitivity Modulation index, μ = k a A m Message Frequency (fm): Carrier Frequency (fc): Carrier Amplitude (Ac): Modulation Index (m = Am / Ac): Interactive AM Demodulation Online Simulator Want to see these equations in action? Visualize it. Launch Simulator Tool Interactive AM Power Simulator Visualize it. Launch Simulator Tool Return to DSP Simulations Main Page →

Chirp Signal Simulator

Chirp Signal Simulator Starting Frequency (Hz) Ending Frequency (Hz) Amplitude phase Up-Chirp (unchecked = Down-Chirp) Generate Chirp Demodulate Return to DSP Simulations Main Page →