1. 课程导入与开发环境搭建
《MATLAB通信与雷达算法原型开发》这门课的目标,不是把 MATLAB 当成一个"画图工具"或"计算器",而是把它当作通信与雷达系统从数学推导走向可运行原型的工程平台。通信链路里的调制解调、信道编码、同步、均衡,雷达链路里的脉冲压缩、匹配滤波、CFAR 检测、多普勒处理,本质上都是"信号—系统—指标"三者的闭环。MATLAB 的价值在于:它允许你用接近数学公式的代码描述这套闭环,并在同一环境里完成仿真、可视化、性能评估与定点/嵌入式验证。因此,本课程的学习路径应当围绕"信号链"展开,而不是围绕函数手册展开。
一、学习路径:从信号链到工具箱
建议的学习顺序是:先建立"信号链"视角,再熟悉工具箱,最后落到工程化。具体来说,第一阶段掌握 MATLAB 基础语法、向量化运算、矩阵操作与绘图;第二阶段进入信号处理基础,包括采样、FFT、滤波器设计与频谱分析;第三阶段进入通信与雷达的专业工具箱;第四阶段学习脚本与实时编辑器、工程目录组织、版本控制与代码规范,把原型变成可维护的工程资产。这条路径的关键判断标准是:你能否独立地把一个通信或雷达算法,从公式写成可运行、可复现、可评估的脚本。
二、工具箱概览:按信号链选工具
MATLAB 在通信与雷达方向的核心工具箱包括:Signal Processing Toolbox(滤波、谱估计、重采样)、Communications Toolbox(调制解调、信道模型、误码率分析)、Phased Array System Toolbox(阵列、波束形成、雷达信号处理)、Radar Toolbox(波形设计、检测、跟踪)、DSP System Toolbox(流式处理、滤波器实现)、Fixed-Point Designer(定点量化与验证)。选择工具的原则是"按信号链环节选",而不是"按函数名选"。例如,做 QPSK 误码率仿真,调制解调用 Communications Toolbox,信道用 AWGN 或 Rayleigh 模型,误码统计用 comm.ErrorRate;做线性调频脉冲压缩,波形生成与匹配滤波用 Phased Array System Toolbox 更直接。
三、脚本与实时编辑器:两种工作方式
MATLAB 提供两种主要的工作载体:脚本(.m)和实时编辑器(.mlx)。脚本适合批量运行、函数调用和版本控制;实时编辑器适合探索性分析,它把代码、输出、公式和文字放在同一文档里,按节运行,非常适合算法原型的迭代。实际开发中常见的做法是:用实时编辑器做探索和验证,确认思路后把稳定代码整理成函数或脚本,纳入工程目录。例如,验证一个匹配滤波器时,可以在实时编辑器里先画出发射 LFM 波形、接收回波和脉压输出,观察主瓣宽度与旁瓣电平,再把参数固化为函数。
% 示例:LFM 脉冲压缩的核心参数(示例参数,非实测)
B = 10e6; % 带宽 10 MHz
T = 10e-6; % 脉宽 10 us
fs = 40e6; % 采样率 40 MHz
k = B/T; % 调频斜率
t = -T/2:1/fs:T/2-1/fs;
st = exp(1j*pi*k*t.^2); % 发射 LFM
ht = conj(fliplr(st)); % 匹配滤波器
y = conv(st, ht); % 脉压输出
% 观察:主瓣宽度约 1/B,峰值旁瓣比约 -13.2 dB(理想 LFM)
这段代码的关键不是"跑通",而是理解参数之间的关系:带宽决定距离分辨率,脉宽决定能量,采样率决定时域离散精度。运行后应观察脉压输出的主瓣宽度是否接近 1/B,旁瓣是否在 -13 dB 量级,从而判断实现是否正确。
四、工程目录组织与版本控制
原型开发最容易失控的地方是文件散乱。建议采用如下目录结构:src/ 放算法函数,scripts/ 放运行入口,data/ 放输入数据,results/ 放输出与图,config/ 放参数配置,tests/ 放单元测试,docs/ 放说明文档。版本控制使用 Git,注意用 .gitignore 排除大体积数据文件和临时结果,只提交源码、配置和小样本数据。提交信息应说明"改了什么、为什么改",而不是"update"。
startup.m,统一添加路径、设置随机种子和默认绘图参数,保证每次运行环境一致,这是原型可复现的基础。五、代码规范:让原型可维护
代码规范不是形式主义,而是降低后续调试与交接成本。核心要求包括:函数名用动词开头、变量名表达物理含义(如 fs、snr_dB、range_bin);每个函数写清输入输出、单位和取值范围;避免魔法数字,把参数集中到配置结构体;绘图必须标注坐标轴单位与标题。例如,snr_dB 明确表示以 dB 为单位的信噪比,避免与线性信噪比混淆。单位约定一旦确定,全文和图示必须一致。
完成本章环境搭建后,你应当能够:安装并确认所需工具箱可用;创建规范的工程目录;用脚本和实时编辑器分别完成一次简单信号仿真;用 Git 管理代码;按规范命名和注释。这些是后续所有通信与雷达算法原型开发的共同基础。