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

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

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

Linear vs Circular Convolution

Linear vs Circular Convolution Linear convolution vs circular convolution Linear convolution (what nature does) If: x[n] = transmitted signal h[n] = channel impulse response (multipath) Then the received signal is: y[n] = x[n] * h[n] This means: Past symbols spill into future symbols Causes inter-symbol interference (ISI) DFT of y[n] is not a simple product Circular convolution (what DFT assumes) The DFT assumes periodic signals : y[n] = x[n] ⊛ h[n], where indices wrap around modulo N Only under circular convolution does the DFT satisfy: Y[k] = X[k] · H[k] This is what enables one-tap frequency-domain equalization . What happens in the real channel (linear convolution) The channel performs linear convolution: y[n] = Σ l=0 Lh−1 h[l] x[n-l] But because: CP absorbs the “spillover” Receiver discards CP before DFT The useful part of the received symbol becomes: y[n] = Σ l=0 Lh−1 h[l] x[(n-l) mod N] Modulo inde...

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 →

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

Design of CMOS XOR/XNOR Gates

Design of CMOS XOR/XNOR Gates The semiconductor industry has experienced rapid integration of multimedia applications into mobile electronics, leading to very high integration density in CMOS VLSI. As operating frequencies increase, power consumption, speed, silicon area, and reliability become critical considerations. The XOR-XNOR circuits are fundamental building blocks in arithmetic circuits (Full Adders, Multipliers), compressors, comparators, parity checkers, code converters, error-detecting/correcting codes, and phase detectors. Their performance directly impacts the complex circuits they are used in. Design goals include full output voltage swing, low power consumption, reduced transistor count, minimal delay, and simultaneous non-skewed outputs. Static Logic (Static CMOS) Stat...

Constellation Diagrams of ASK, PSK, and FSK (with MATLAB Code + Simulator)

Constellation Diagrams: ASK, FSK, and PSK Comprehensive guide to signal space representation, including interactive simulators and MATLAB implementations. 📘 Overview 🧮 Simulator ⚖️ Theory 📈 Q-function 📚 Resources BASK Modulation Transmits one of two signals: 0 or $\sqrt{E_b}$, representing binary 0 and 1. Simple but sensitive to noise. BFSK Modulation Transmits one of two signals: $\sqrt{E_b}$ on the Y-axis or $\sqrt{E_b}$ on the X-axis. These are orthogonal signals. BPSK Modulation Transmits $+\sqrt{E_b}$ or $-\sqrt{E_b}$ (antipodal signaling). Most efficient binary scheme. ...