共计 1219 个字符,预计需要花费 4 分钟才能阅读完成。
背景介绍
AM(Amplitude Modulation)调幅是通信系统中基础的模拟调制技术,广泛应用于广播、航空通信等领域。通过 MATLAB/Simulink 仿真可以直观观察信号调制 / 解调过程,验证理论计算结果,是通信工程学习的必备技能。

为什么选择 MATLAB/Simulink?
- 可视化建模:Simulink 的图形化界面让系统搭建像搭积木一样简单
- 算法验证快:无需硬件即可验证 AM 系统各环节信号特征
- 参数灵活调整:通过滑块实时观察载波频率、调制深度等参数的影响
- 无缝协作:MATLAB 脚本与 Simulink 模型可相互调用
核心实现步骤
1. 输入信号设置
在 MATLAB 命令窗口输入以下代码生成测试信号:
% 基础参数
fs = 10000; % 采样率 10kHz
t = 0:1/fs:1-1/fs; % 1 秒时间向量
% 生成 1kHz 正弦信号作为调制信号
fm = 1000;
msg_signal = sin(2*pi*fm*t);
% 生成 10kHz 载波信号
fc = 10000;
carrier = cos(2*pi*fc*t);
2. Simulink 模型搭建
- 新建 Blank Model
- 添加以下模块:
- Sine Wave(生成载波)
- Sine Wave1(生成调制信号)
- Product(实现乘法调制)
- Scope(显示波形)
- 按图示连接各模块
3. 关键参数配置
- 载波频率:建议设置为调制信号频率的 5 -10 倍
- 采样时间:遵循奈奎斯特定理,至少是最高频率的 2 倍
- 仿真时长:至少包含调制信号的 2 - 3 个完整周期
完整代码示例
%% AM 调制仿真完整示例
close all; clear; clc;
% 信号参数设置
fs = 20000; % 采样频率
t = 0:1/fs:0.01-1/fs; % 10ms 时间序列
% 调制信号(1kHz 正弦波)fm = 1000;
Am = 0.8; % 调制深度 80%
msg = Am*sin(2*pi*fm*t);
% 载波信号(10kHz)fc = 10000;
carrier = cos(2*pi*fc*t);
% AM 调制
AM_signal = (1 + msg).*carrier;
% 绘制时域波形
figure;
subplot(3,1,1); plot(t,msg); title('调制信号');
subplot(3,1,2); plot(t,carrier); title('载波信号');
subplot(3,1,3); plot(t,AM_signal); title('AM 调制信号');
典型仿真结果分析
通过调整调制深度 Am 观察波形变化:
- Am=0.5 时:包络线清晰,无过调制
- Am=1.0 时:出现瞬时幅度为零的临界状态
- Am=1.2 时:发生过调制,包络失真
新手常见问题
- 波形显示不全:检查 Scope 的 Time range 设置
- 出现高频毛刺:确认采样率是否足够高
- 解调失败:检查本地载波是否与发射端同频同相
进阶优化方向
- 添加信道噪声(AWGN 模块)
- 实现相干解调 / 包络检波
- 加入自动增益控制 (AGC) 电路
思考题
当调制信号改为方波时,AM 信号的频谱会发生什么变化?如何通过仿真验证你的猜想?
正文完
