数字信号处理Python示例(21)生成幅度调制AM信号
文章目录
- 前言
- 一、幅度调制(Amplitude Modulation, AM)
- 二、生成AM信号的Python代码
- 三、仿真结果及分析
- 写在后面的话
前言
本文首先介绍了AM(调幅)信号的调制原理,然后使用Python代码实现了不同调制度的AM调制,绘制了调制信号波形。最后,在仿真结果分析的基础上介绍了欠调幅、过调幅和满调幅的概念。
一、幅度调制(Amplitude Modulation, AM)
幅度调制(Amplitude Modulation, AM)是模拟调制的一种形式。在幅度调制中,载波信号的幅度随信息信号(也称为调制信号或基带信号)的幅度变化而变化,而载波的频率和相位保持不变。
这里有三个关键词:
(1)载波信号 :通常是一个高频正弦波,其频率远高于信息信号的频率。载波信号通常表示为: c(t)=Ac cos(2πfc t)其中,Ac 是载波的幅度,fc 是载波的频率,t是时间变量。
(2)信息信号 :是一个低频信号,通常包含了要传输的数据或信息,可以是一个音频信号、视频信号或其他形式的信号。信息信号通常表示为:m(t)=Am cos(2πfm t+ϕm)其中,Am是信息信号的幅度,fm是信息信号的频率,ϕm是信息信号的初始相位。
(3)幅度调制 :将信息信号的幅度变化映射到载波信号的幅度上。在标准幅度调制中,调制后的信号可以表示为: sAM(t)=(Ac+m(t)) cos(2πfc t),在这个表达式中,m(t) 是信息信号的瞬时幅度,Ac 是未调载波的幅度。调制后的信号包络在Ac -Am和Ac+Am之间变化。
幅度调制的主要优点是它相对简单且易于实现。缺点包括较低的频谱效率和较差的抗噪声性能。尽管如此,AM 仍然在广播领域(尤其是中波和短波广播)以及一些其他应用中得到了广泛的使用。
二、生成AM信号的Python代码
下面给出一个生成AM信号的Python代码示例。
# 导入必要的库
import numpy as np
import matplotlib.pyplot as plt
# 参数设置
duration = 0.01 # 持续时间(秒)
fs = 80000 # 采样率(赫兹)
fm = 1000 # 低频正弦波的频率(赫兹)
fc = 10000 # 高频正弦波的频率(赫兹)
m = [0.5, 1, 1.5] # 调制深度,也称调制度
# 生成时间向量
t = np.linspace(0, duration, int(fs * duration), endpoint=False)
message = np.sin(2 * np.pi * fm * t) # 调制信号
carrier = np.sin(2 * np.pi * fc * t) # 未调载波
# 遍历不同的调制度
for i in range(len(m)):
AM_sig = (1 + m[i] * message) * carrier
plt.subplot(3, 1, i + 1)
plt.plot(t, AM_sig)
plt.xlabel('时间(s)')
plt.ylabel('幅度(v)')
plt.title('AM调制信号,调制度m = {}'.format(m[i]))
plt.grid(True)
# 调整子图布局以避免重叠
plt.tight_layout()
# 显示所有子图
plt.show()
三、仿真结果及分析
以下是执行代码后画图的结果。

结果分析:
代码执行生成了三个子图,分别绘制了不同调制深度(m = 0.5, 1, 1.5)的调幅(AM)信号。已调AM信号中,载波的幅度随着信息信号而改变,随着调制深度的增加,调幅信号的幅度变化变得更加显著:
(1)调制指数小于1的AM称为欠调幅。
(2)调制指数大于1的AM称为过调幅。
(3)调制指数等于1的AM称为满调幅(Full Amplitude Modulation)。此时,调幅波的振幅达到最大值,即调幅波的包络与调制信号的形状完全一致。在调幅(AM)中,调幅指数β(代码中为m)等于1时,称为满调幅。这意味着基带信号的幅度完全控制了载波的幅度,调幅波的包络与调制信号的形状一致。在实际应用中,满调幅通常用于确保信号的完整传输和接收。
写在后面的话
这是《数字信号处理python示例》系列文章的第21篇。整个系列将使用python语言示例说明数字信号处理的基本原理与工程应用。给出的所有Python程序将努力做到简单且具有说明性。在数字信号处理的理论方面,将尽量避免数学上的推导与证明,而注重其物理意义阐述和工程应用的介绍。
感谢您的阅读!
