基于MATLAB的2PSK调制解调系统仿真
项目介绍
本项目是一个基于MATLAB环境开发的数字通信仿真系统,专注于二进制相移键控(2PSK)调制与解调技术的完整链路实现。项目通过编写脚本模拟了从信源产生、载波调制、加性高斯白噪声(AWGN)信道传输、相干解调到抽样判决的通信全过程。
该仿真系统不仅提供了直观的时域波形展示,帮助理解信号在各个节点的变换特征,还包含了基于蒙特卡洛方法的误码率(BER)性能分析,通过对比仿真结果与理论曲线,验证了系统的可靠性与正确性。
功能特性
- 全链路仿真:涵盖基带信号生成、BPSK调制、噪声信道模拟、相干解调、低通滤波及判决恢复。
- 波形可视化:针对少量码元(20 bits),绘制这一过程中的所有关键波形,直观展示信号的时域变化。
- 信道建模:使用MATLAB内置函数模拟加性高斯白噪声(AWGN)信道,支持不同信噪比(SNR)配置。
- 高性能滤波:在解调端设计了巴特沃斯低通滤波器,并采用零相位滤波技术消除相位延迟。
- 误码率分析:基于10万个码元的大数据量仿真,计算不同SNR下的误码率,并与理论BER公式进行对比绘图。
- 可复现性:通过设置固定的随机数种子,确保每次运行的仿真结果一致。
系统要求
- MATLAB R2016b 及以上版本
- 信号处理工具箱 (Signal Processing Toolbox) - 用于滤波器设计及相关信号处理函数
使用方法
- 在MATLAB中打开项目文件夹。
- 运行主仿真脚本。
- 程序运行结束后,将自动弹出两个图形窗口:
*
窗口1:展示2PSK调制解调过程的时域波形(共有5个子图)。
*
窗口2:展示误码率性能分析曲线(包含理论值与仿真值的对比)。
- 控制台将输出仿真进度的提示信息。
仿真实现逻辑与细节
主仿真脚本分为参数定义、波形演示、误码率分析三个主要部分,具体实现逻辑如下:
1. 系统参数配置
系统设定了通信的基础参数:码元速率为 1000 Baud,载波频率为 5000 Hz,采样频率为 50000 Hz。由此计算出每个码元包含 50 个采样点。波形展示部分设定演示 20 个码元,而误码率统计部分设定总量为 100,000 个码元以保证统计精度。
2. 波形仿真演示 (可视化部分)
此部分旨在直观展示通信原理:
- 信源产生:生成长度为 20 的随机二进制序列(0/1),并将其转换为双极性不归零码(0对应-1,1对应+1),随后通过上采样生成连续时间的基带信号。
- 2PSK调制:将基带信号与高频余弦载波相乘,实现相移键控调制。
- 信道传输:设定演示信噪比为 10dB,利用
awgn 函数向已调信号中加入噪声。 - 相干解调:
*
相乘:接收信号与本地同频同相载波相乘。
*
滤波:设计一个 6 阶巴特沃斯低通滤波器,截止频率略大于码元速率,滤除倍频分量。使用
filtfilt 函数实现零相位滤波,防止波形发生时延。
*
抽样判决:在每个码元的中间时刻进行抽样,根据抽样值大于0或小于0判决为逻辑1或0,从而恢复原始数据。
- 绘图:依次绘制原始基带、发射端已调信号、接收噪声信号、滤波后信号(含抽样点标记)以及最终恢复的基带信号。
3. 蒙特卡洛误码率性能分析
此部分通过大数据量循环计算评估系统性能:
- 数据生成:一次性生成 100,000 个随机比特,并利用
rectpulse 函数快速生成对应的双极性基带波形向量。 - 调制与传输:生成对应长度的载波向量,完成调制。脚本在一个信噪比循环(0-12dB)中运行,每次循环对应不同的噪声强度。
- 解调流程:同样采用相干解调与巴特沃斯低通滤波(
filtfilt)。 - 误码统计:在每个符号的中心位置对滤波后的信号进行采样,通过阈值判决得到恢复的比特序列。将恢复序列与原始发送序列对比,统计错误比特数并计算误码率(BER)。
- 理论对比:依据 2PSK 理论误码率公式
0.5 * erfc(sqrt(10^(SNR/10))) 计算理论值。 - 结果展示:使用
semilogy 绘制对数坐标下的误码率曲线,黑色实线代表理论值,蓝色圆点线代表仿真值,两者通常高度重合。
关键算法与函数
- rng(42):固定随机数种子,保证实验结果的可重复性。
- awgn:模拟加性高斯白噪声信道,模式设为 'measured' 以根据信号功率自动添加指定信噪比的噪声。
- butter:设计巴特沃斯模拟/数字滤波器系数,本项目中设计为 6 阶低通。
- filtfilt:执行零相位数字滤波,这是解调过程中保持信号相位与原始时钟同步的关键,避免了普通滤波带来的时延偏移。
- rectpulse:在误码率分析阶段用于将二进制序列快速扩展为矩形脉冲波形。
- erfc:互补误差函数,用于计算理论误码率。