本课程为华南理工大学电子与信息学院开设的专业核心课程之一,旨在通过理论教学和实践操作相结合的方式,使学生掌握信息论的基本概念及通信原理的应用。期末作业是检验学生对所学知识理解程度的重要环节。
2020-2021年秋季学期华南理工大学本科生课程《信息论基础与通信原理》大作业/Big Project of the 2020-2021 SCUT Course Information Theory and Principle of Communication本系统采用A律PCM编码,调制方式选用16PSK,解调方式为相关解调和相干解调。文件main.py实现了信号audio.wav在通信系统中的传输,验证时请运行此文件,运行后可得到接收信号audio_correlated_decoded.wav或audio_coherent_decoded.wav以及运行结果数据correlated.txt或coherent.txt。
test_and_plot模块用于测试少量音频数据点的传输效果,并绘制图像。performance_estimation模块则用于评估系统输出误差情况。
- audio.wav: 测试用歌曲《歌唱祖国》
- 文件夹module存放自定义模块:
- audio_func.py:信号基本操作,包括wav文件播放和ndarray到wav的转换功能;
- channel.py:模拟信道中的AWGN噪声加入过程;
- pcm.py:实现A律PCM编译码功能;
- psk16.py: 实现信号的16PSK调制解调。
结果存放于result文件夹中:
- correlated.txt为相关解调输出,包括误比特数、误比特比以及运行时间。
- coherent.txt记录相干解调的结果,同样包含比特总数、误码率与信噪比及运行时长。
- audio_correlated_decoded.wav和audio_coherent_decoded.wav分别代表使用了两种不同方式的音频信号解码输出。
此外,在figure文件夹中还有各种测试图像:
- original_signal.png展示了输入信号及其经过两种解调后的结果;
- PCM_encoded_signal、16PSK_modulated_signal等为编码与调制波形图。
同时,corr_snr_err和snr_err分别表示有差错控制编码及无差错控制编码条件下误码率随信噪比变化关系。
程序运行时会生成.vscode文件夹作为Visual Studio Code的配置使用,在其他IDE中可能需要适当调整。由于16PSK调制解调运算复杂,整个系统在高性能计算机上(如Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz, 内存24GB)进行一次完整运行需花费约半小时左右。
为了方便检验效果,在result文件夹中已提前准备了相关解调和相干解调的输出音频,用户可以直接播放audio_correlated_decoded.wav及audio_coherent_decoded.wav来验证系统性能。如默认测试信号(持续3分多钟)对您的设备造成较大负担,请尝试截短该段落或使用其他单通道wav文件。
在psk16.py模块中定义了fc,fs参数,分别代表调制载波频率和码元速率,默认设置为$f_c=10f_s$。请注意修改时保持两者之间整数倍关系,并建议不要将比例设得过大以免增加计算复杂度;同时最后一个输入参数控制一个模拟载波周期中的数据点数量,请合理设定以避免不必要的性能消耗。