AM Modulation Simulation with Python
Advertisement
This document provides Python code for simulating Amplitude Modulation (AM) and demodulation.
Introduction
Modulation techniques fall into two main categories: analog and digital.
- Analog Modulation: The baseband information or message signal is analog. Examples include AM, FM, and PM.
- Digital Modulation: The baseband information or message signal is digital (binary). Examples include ASK, FSK, and PSK.
This article focuses on AM, an analog modulation technique.

The figure above illustrates the AM process. An analog message signal modulates an RF carrier. The amplitude of the RF carrier varies in accordance with the amplitude of the modulating signal. This is in contrast to ASK, which uses a digital message signal.
For single-tone modulation, the AM process can be expressed as follows:
- Carrier signal:
- Message signal:
- AM modulated signal:
Where:
- , where is the amplitude sensitivity.
AM Modulation and Demodulation Python Script
The following Python script generates AM modulated data and demonstrates AM demodulation.
# AM Modulation Python Script
import numpy as np
import matplotlib.pyplot as plt
from math import pi
plt.close('all')
# Setting up AM modulation simulation parameters
Fs = 1500
n = np.arange(0,2,1/Fs)
# Generate carrier frequency
Fc = 50
Ac = 1
c = Ac*np.sin(2*pi*Fc*n) # carrier frequency wave
# Generate message signal
Fm = 2 # Signal frequency
Am = 0.5
m = Am*np.sin(2*pi*Fm*n)
# Generate Amplitude modulated signal
s = c * (1 + m/Ac)
# Plots
plt.subplot(3,1,1)
plt.plot(n,s)
plt.title("Unmodulated case, Am = 0.5")
plt.xlabel('Time(s)')
plt.ylabel('Amplitude')
plt.grid(True)
Am = 1
m = Am * np.sin(2*pi*Fm*n)
s = c * ( 1 + m/Ac)
plt.subplot(3,1,2)
plt.plot(n,s)
plt.title("Full modulation case, Am = 1")
plt.xlabel('Time(s)')
plt.ylabel('Amplitude')
plt.grid(True)
Am = 1.5
m = Am * np.sin(2*pi*Fm*n)
s = c * ( 1 + m/Ac)
plt.subplot(3,1,3)
plt.plot(n,s)
plt.title("Over modulation case, Am = 1.5")
plt.xlabel('Time(s)')
plt.ylabel('Amplitude')
plt.grid(True)
plt.tight_layout()
plt.show()
Output Plots
The following plots are generated by the AM modulation Python script above.

Explore Python Codes on Wireless Communication & Modulation Simulations
- FM Modulation in Python
- PM Modulation with Python
- ASK Modulation in Python
- FSK Modulation in Python
- PSK Modulation in Python
- BPSK, QPSK, QAM Modulation in Python
- QPSK Mapper / Demapper Python Code
- OFDM Transmitter Simulation in Python (WiMAX)
- Generalized OFDMA Simulation with Python
Continue Learning Modulation Types
- AM Vs. FM Vs. PM : Difference between Analog Modulation Techniques
- ASK Vs. FSK Vs. PSK : Difference between Digital Modulation Techniques
- PAM Vs. PWM Vs. PPM : Difference between Pulse Modulation Techniques
- BPSK Vs. QPSK : Key Differences
- 16-QAM Vs. 64-QAM Vs. 256-QAM : Key Differences
- 512-QAM Vs. 1024-QAM Vs. 2048-QAM Vs. 4096-QAM
- 4096QAM Modulation Used in Wi-Fi 7
- MSK Vs. GMSK : Modulation Technique used in GSM
- LORa Modulation Used in LoRaWAN
- 10% ASK & 100% ASK Modulation used in NFC
- OOK Vs. VPPM Vs. CSK : Visible Light Communication (VLC) Modulation Techniques
- QPSK Vs. OQPSK Vs. PI/4 QPSK
- PAM4 Modulation Used in Gigabit Ethernet
- CCK Vs. DSSS Vs. OFDM Used in WLAN (Wi-Fi) Standards
