Skip to main content

MATLAB Code for Constellation Diagram of QAM configurations such as 4, 8, 16, 32, 64, 128, and 256-QAM


Overview of QAM

One of the best-performing modulation techniques is QAM [↗]. Here, we modulate the symbols by varying the carrier signal's amplitude and phase in response to the variation in the message signal (or voltage variation). So, we may say that QAM is a combination of phase and amplitude modulation.

Additionally, it performs better than ASK or PSK [↗]. In fact, any constellation for any type of modulation, signal set (or, symbols) is structured in a way that prevents them from interacting further by being distinct by phase, amplitude, or frequency.

MATLAB Script (for 4-QAM)

This is an example of 4-QAM. Here constellation size is 4 or total number of symbols/signals is 4. We map the decimal value of the input symbols (00, 01, 10, 11) to complex coordinates.

MATLAB Code 4-QAM
% This code is written by SalimWirelss.Com
clc;clear all;close all;
M = 4; % Number of levels
k = log2(M); % Bits per symbol
rng(10) % seed
N = 10000; % Number of bits
InputBits = randi([0 1],1,N); 
InputSymbol_matrix = reshape(InputBits,length(InputBits)/k,k); 
InputSymbols_decimal = bi2de(InputSymbol_matrix); 

for n= 1:N/k
    if InputSymbols_decimal(n)==0
        QAM(n)= complex(1,1);
    elseif InputSymbols_decimal(n)==1
        QAM(n)= complex(-1,1);
    elseif InputSymbols_decimal(n)==2
        QAM(n)= complex(1,-1);
    else
        QAM(n)= complex(-1,-1);
    end
end

% Transmission over AWGN
snrdB = 10;
Y=awgn(QAM,snrdB); 

% Threshold Detection
for n= 1:N/k
    if (real(Y(n))>0 && imag(Y(n))>0)
        Z(n)=complex(1,1);
    elseif (real(Y(n))>0 && imag(Y(n))<0 complex="" elseif="" imag="" n="" real="" z="">0)
        Z(n)=complex(-1,1);
    else
        Z(n)=complex(-1,-1);
    end
end

figure(1); scatter(real(QAM), imag(QAM)); xlim([-3, 3]); ylim([-3, 3]); title('Transmitted');
figure(2); scatter(real(Y), imag(Y)); xlim([-3, 3]); ylim([-3, 3]); title('Received');
4-QAM Transmitted
Fig 1: Constellation points of 4-QAM (Transmitted)
4-QAM Received
Fig 2: Constellation points of 4-QAM (Received)

Another MATLAB Code (for 16-QAM)

A custom implementation for 16-QAM modulation and demodulation including normalization to unit average power.

MATLAB Code 16-QAM
% The code is developed by SalimWireless.Com
clc; clear; close all;
M = 16; 
numSymbols = 10000; 
data = randi([0 M-1], numSymbols, 1); 
modData = qammod_custom(data, M);
snrdB = 15;
Y = awgn(modData,snrdB); 

figure;
subplot(2,1,1); scatter(real(modData), imag(modData), 'o'); grid on;
title('Constellation Diagram (16-QAM)');
subplot(2,1,2); scatter(real(Y), imag(Y), 'o'); grid on;
title('Received Noisy Signal');

% Custom Functions
function modData = qammod_custom(data, M)
    constellation = [-3-3i, -3-1i, -1-3i, -1-1i, -3+3i, -3+1i, -1+3i, -1+1i, ...
                      +3-3i, +3-1i, +1-3i, +1-1i, +3+3i, +3+1i, +1+3i, +1+1i];
    constellation = constellation / sqrt(mean(abs(constellation).^2)); 
    modData = constellation(data + 1);
end
16-QAM Output

MATLAB for M-ary QAM (General)

This code supports multiple configurations such as 4, 8, 16, 32, 64, 128, and 256-QAM using MATLAB's built-in functions.

MATLAB Code M-ary QAM
% The code is developed by SalimWireless.com
M = 32;  % Order of QAM
N = 1000;  % Symbols
SNR = 10; 
dataSymbols = randi([0 M-1], N, 1);
txSignal = qammod(dataSymbols, M);
rxSignal = awgn(txSignal, SNR, 'measured');
demodulatedSymbols = qamdemod(rxSignal, M);
SER = sum(dataSymbols ~= demodulatedSymbols) / N;
disp(['Symbol Error Rate: ', num2str(SER)]);

figure;
subplot(2, 1, 1); plot(real(txSignal), imag(txSignal), 'o'); title('Transmitted');
subplot(2, 1, 2); plot(real(rxSignal), imag(rxSignal), 'o'); title('Received');
M-ary QAM Constellation

BER vs SNR Analysis

Evaluate the performance of various QAM configurations by plotting Bit Error Rate against Signal-to-Noise Ratio.

Interactive QAM Simulator

Visualize 4-QAM, 16-QAM, 64-QAM, and 256-QAM constellations instantly with our online tool.

Simulator Preview
Launch Simulator Now Other Simulations



Contact Us

Name

Email *

Message *

Popular Posts

FFT Butterfly Method Explained (with Simulations)

4-Point FFT Using Butterfly Method Given: x[n] = {0, 1, 2, 3} Step 1: Split into Even & Odd Even indices: x e = {x[0], x[2]} = {0, 2} Odd indices: x o = {x[1], x[3]} = {1, 3} Step 2: 2-point DFT For any {a, b}: DFT = {a + b, a - b} Even Part (E): {0+2, 0-2} = {2, -2} Odd Part (O): {1+3, 1-3} = {4, -2} Step 3: Combine Using Butterfly X[k] = E[k] + W 4 k O[k] X[k + 2] = E[k] - W 4 k O[k] Twiddle Factors (N=4): W 4 0 = 1, W 4 1 = -j Final Calculations: X[0] = E[0] + W 4 0 O[0] = 2 + (1)(4) = 6 X[2] = E[0] - W 4 0 O[0] = 2 - (1)(4) = -2 X[1] = E[1] + W 4 1 O[1] = -2 + (-j)(-2) = -2 + 2j X[3] = E[1] - W 4 1 O[1] = -2 - (-j)(-2) = -2 - 2j Final Answer: X[k] = {6, -2 + 2j, -2, -2 - 2j} 8-Point FFT Using Butterfly Method Given: x[n] = {0,1,2,3,4,5,6,7} Step 1: Split into Bit-Reversed Order To perform DIT-FFT, split the 8 points into pairs of two: Group A: {x[0], x[4]} = {0, 4}...

MATLAB Code for BER performance of QPSK with BPSK, 4-QAM, 16-QAM, 64-QAM, 256-QAM, etc

📘 Overview 🧮 MATLAB Codes 🧮 Online Simulator for Calculating BER of M-ary PSK and QAM 🧮 QPSK vs BPSK and QAM: A Comparison of Modulation Schemes in Wireless Communication 🧮 Are QPSK and 4-PSK same? 📚 Further Reading   QPSK offers double the data rate of BPSK while maintaining a similar bit error rate at low SNR when Gray coding is used. It shares spectral efficiency with 4-QAM and can outperform 4-QAM or 16-QAM in very noisy channels. QPSK is widely used in practical wireless systems, often alongside QAM in adaptive modulation schemes [Read more...] What is the Gray Code? Gray Code: Gray code is a binary numeral system where two successive values differ in only one bit. This property is called the single-bit difference or unit distance code. It is also known as reflected binary code. Let's convert binary 111 to Gray code: Binary bits: B = 1 1 1 Apply the rule: G[0] = B[0] = 1...

MATLAB Code for QPSK Modulation and Demodulation

📘 Overview 🧮 MATLAB Codes 🧮 Theory 🧮 BER performance of QPSK with BPSK, 4-QAM, 16-QAM, 64-QAM, 256-QAM, etc 📚 Further Reading QPSK Passband Signal Generation Spectral Efficiency in QPSK   Quadrature Phase Shift Keying (QPSK) is a digital modulation scheme that conveys two bits per symbol by changing the phase of the carrier signal. Each pair of bits is mapped to one of four possible phase shifts: 0°, 90°, 180°, or 270° 00  ===> 0 degree phase shift of carrier signal 01  ===> 90 degree 11  ===> 180 degree 10  ===> 270 degree   MATLAB Script clc; clear all; close all; clc; M = 4; data = randi([0 (M-1)], 1000, 1); Phase = 0; modData=pskmod(data,M,Phase); figure(1); scatterplot(modData); channelAWGN = 15; rxData2 = awgn(modData, channelAWGN); figure(2); scatterplot(rxData2); demodData = pskdemod(rxData2,M,Phase);   Result data 1 0 2 2 0 2 1 . . . modData -1.0...

Design of CMOS Flip-Flops (SR, D, JK)

Design of CMOS Flip-Flops (SR, D, JK) A flip-flop or latch is a circuit with two stable states, used to store state information. It is the basic storage element in sequential logic and a fundamental building block in digital electronics systems, including computers and communication devices. Flip-flops and latches act as data storage elements for states, pulse counting, and synchronization of variably-timed input signals to a reference clock. Flip-flops can be transparent/opaque (latches) or clocked (synchronous, edge-triggered). Latches are level-sensitive, while flip-flops are edge-sensitive. In sequential logic, the output depends on current inputs and previous states. Fig.1 shows a sequential circuit combining a combinational block and a memory element. ...

Pulse Amplitude Modulation and Demodulation

📘 Overview & Theory of Pulse Amplitude Moduation (PAM) 🧮 Pulse Amplitude Demoduation 🧮 MATLAB Code for PAM 📚 Further Reading 📂 Other Topics on Pulse Amplitude Modulation ... 🧮 Simulation results for comparison of PAM, PWM, PPM, DM, and PCM 🧮 Other Pulse Modulation Techniques (e.g., PWM, PPM, DM, and PCM) 🧮 MATLAB Code for Pulse Amplitude Modulation and Demodulation of an Analog Signal (2) 🧮 MATLAB Code for Pulse Amplitude Modulation and Demodulation of Digital data  Pulse Amplitude Modulation (PAM) Sampling allow us to represent real world continuous signal, such as audio or video, in a format suitable for digital processing and storage. This sampled discrete-time signal is inherently digital. A digital signal is a discrete-time signal that is further quantized in amplitude. Pulse Amplitude modulation (PAM) is the modulation technique in which amplitude of carrier pulses is...

Frequency Bands : EHF, SHF, UHF, VHF, HF, MF, LF, VLF and Their Uses

Frequency Bands >> EHF, SHF, UHF, VHF, HF, MF, LF... Frequency Bands and Their Uses 1. Extremely High Frequency (EHF) 30 - 300 GHz Uses 5G Networks 5G millimeter wave band 6G and beyond (Experimental) RADAR 2. Super High Frequency (SHF) 3 - 30 GHz Uses Ultra-wideband (UWB) Airborne RADAR Satellite Communication Microwave Link Communication or SATCOM 3. Ultra High Frequency (UHF) 300 - 3000 MHz Uses Satellite Communication Television Surveillance Navigation aids Also, read important wireless communication terms 4....

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