基于python的信号集问题

Dreamlover

发布日期: 2019-03-13 12:47:50 浏览量: 302
评分:
star star star star star star star star star_border star_border
*转载请注明来自write-bug.com

题目

借助计算机编程分别给出下图所示的两个信号集的功率效率(BER与Eb/N0的关系),并通过比较其功率效率解释编码负增益现象。

原理

由于移动通信存在干扰和衰落,在信号传输过程中将出现差错,故对数字信号必须采用纠、检错技术,即纠、检错编码技术,以增强数据在信道中传输时抵御各种干扰的能力,提高系统的可靠性。对要在信道中传送的数字信号进行的纠、检错编码就是信道编码。

信道编码的基本思想是通过引入可控制的冗余比特,使信息序列的各码元和添加的冗余码元之间存在相关性。在接收端信道译码器根据这种相关性对接收到的序列进行检查,从中发现错误或进行纠错。对于相同比特的符号,则通过增大最小汉明距离达到信道编码的效果。

当信道条件十分恶劣时,就会出现编码负增益的现象,在同数量比特符号的条件下,采用信道编码的效果更差,即采用信道编码优化方案后,误比特率下降了,因为未经过信道编码优化的方案具有更大的最大汉明距离,而此时能分辨出两个最大汉明距离的符号才是使系统达到最优的方案。通过比较不同功率效率,比较仿真结果,我们应该能看到一个相交点。

工具选择

本次课设的目标是通过仿真结果探究信道编码在实际通信系统中的作用,所以仿真的精度和准度尤其重要,而精准度体现在仿真过程的模拟要和实际过程尽可能的接近。

于是通过前期的调研,选用的工具集在matlab和python间徘徊,其中matlab的封装性较好,产生高斯白噪声以及信号都有封装完全的函数,精度也可以通过控制采样点的数量来控制,但是由于封装性太好,无法看到内部的实现原理,并且限制了实际编程过程中的自由发挥。

Python是一种面向对象的、动态的程序设计语言,具有非常简洁而清晰的语法,既可以用于快速开发程序脚本,也可以用于开发大规模的软件,特别适合于完成各种高层任务。

随着NumPy、SciPy、matplotlib、ETS等众多程序库的开发,Python越来越适合于做科学计算。与科学计算领域最流行的商业软件MATLAB相比,Python是一门真正的通用程序设计语言,比MATLAB所采用的脚本语言的应用范围更广泛,有更多程序库的支持,适用于Windows和Linux等多种平台,完全免费并且开放源码。虽然MATLAB中的某些高级功能目前还无法替代,但是对于基础性、前瞻性的科研工作和应用系统的开发,完全可以用Python来完成。

为了编程的自由可控,也为了能更好地学习掌握整个系统的工作原理,我选择使用python进行仿真,从零开始设计整个通信系统。

步骤

第一步:确定采样频率fm>2fs 。以下为采样需满足的条件:

以下为一个成功采样频率的实例,学会如何用数字形式表示原来的模拟信号(将t写成n/f):
同时对数字周期建立一个概念。

第二步:将模拟信号写成数字信号的形式,确定采样的点数,即窗口N的大小,这里要满足1/(fm/N) > T,fm为采样频率,N为窗口大小,T为信号的周期,也可以改写成N>N0,N0为数字信号的周期(如上例N0为64,N为128)。

N的选取很重要,本例N取256时有一个频谱峰值就弱化成两个小峰了,可以在信号后面补256个0再做512点的fft。

上传的附件 cloud_download 基于python的信号集问题.zip ( 2.48mb, 1次下载 )
error_outline 下载需要8点积分

发送私信

花有重开日,人无再少年

11
文章数
10
评论数
最近文章
eject