概述
最近在做有关矿井智能信息处理的通信仿真,在学习过程中遇到了一些问题以及自己的思考,并且将学习到的一些仿真知识记录一下,当作自己的学习笔记,也希望可以和大家交流学习。
关于BPSK和QPSK最开始接触还是在本科阶段通信原理的课本上,作为数字调制的内容进行学习,但是当时的学习很浅显,只是老师理论的讲解一下,没有仿真实践,因此理解也不深刻,直到最近开始做仿真的时候才发现,自己的学习还是十分欠缺,所以说把理论知识应用在实际工作中还是有一定的距离,需要我们多加练习。好了,废话不多说,我们接下来看一下BPSK和QPSK的具体内容。
首先介绍一下MATLAB中能够实现BPSK调制的两种方式:pskmod(x,M,ini_phase),comm.BPSKModulator(name,value) 这两种方式都可以实现对原始信息比特的数字调制。
针对pskmod()函数的调用,MATLAB中的解释是对输入的信号X做M阶的相移键控调制。具体的信息可以查看帮助文档,(help + 你要查找的函数名)讲解的十分全面。
另一种实现方式是,调用MATLAB中的通信工具箱,创建一个BPSK调制项目,说项目可能有点不接地气,我的理解就是创建一个BPSK调制器,相当于c++中声明一个函数一样,因为函数内部的实现方式已经被写好封装在通信工具箱中,我们在用的时候只需要声明一下就行了。 相应的也会有一个BPSK解调器,调用的方式一样。
接下来,我们做一些简单实现。
首先我们需要产生一个随机的序列,然后对序列进行BPSK和QPSK调制,并通过星座图来观察符号映射后的效果。
% 产生随机序列
data = randi([0 1],1,10000);
% 无初始相位
mod_data1 = pskmod(data,2);
% 添加pi/4的初始相位
mod_data2 =pskmod(data,2,pi/4);
scatterplot(mod_data1)
scatterplot(mod_data2)
% 调用通信工具箱的方法
bpsk_mod = comm.BPSKModulator('PhaseOffset',pi/4);
% 输入为列向量
mod_data3 = bpsk_mod(data.');
scatterplot(mod_data3)
需要注意的一点是,在利用通信工具箱这种方法时,要求输入的信号必须是列向量。
图中的星座点较小可能看不太清楚,为了便于观察,我们增加一定的噪声 。
mod_data1 = awgn(mod_data1,10,'measured')
这样是不是就清楚许多,这要感谢awgn()这个函数,说实话我是非常喜欢这个函数,在通信仿真中出现频率极高,而且简单好用,并且从2014版本(我是2016年大一的时候第一次接触MATLAB)到现在的2019版本这个函数都没有被改动,可见其受欢迎程度,但是这个函数背后的知识点还是挺多的,尤其涉及到信噪比的相互转换,以及不同情况下信噪比的选取需要好好理解,这个后续再说。
同样的QPSK调制与BPSK调制大同小异,只是细节的区别。
其中对于pskmod的方式要求是输入的信号为[0 M-1]的序列,但是通常情况下,我们在做仿真是产生的都是[0 1]序列,这便给仿真造成了麻烦,但是利用通信工具箱的方式就可以很好的避免。
其中BitInput这个参数的选择就成功解决了这个麻烦。接下来我们看代码实现。
data = randi([0 3],1,10000);
mod_data1 = pskmod(data,4);
mod_data2 = pskmod(data,4,pi/4);
mod_data1 = awgn(mod_data1,10,'measured');
mod_data2 = awgn(mod_data2,10,'measured');
scatterplot(mod_data1)
scatterplot(mod_data2)
qpsk_mod = comm.QPSKModulator('PhaseOffset',pi/4,'BitInput',true);
data1 = randi([0 1],1,10000);
mod_data3 = qpsk_mod(data1.');
mod_data3 = awgn(mod_data3,10,'measured');
scatterplot(mod_data3)
相比较之下,我个人更愿意利用通信工具箱的方式进行数字调制,因为它可以应对几乎所有的信源情况,只是多加了一条声明的代码。这里只是列出了十分常用的BPSK和QPSK的使用,还有许多更高阶的数字调制方式,也是类似的使用,只是细节处的不同。
最后
以上就是天真小刺猬为你收集整理的关于BPSK、QPSK的一些理解,以及MATLAB实现的全部内容,希望文章能够帮你解决关于BPSK、QPSK的一些理解,以及MATLAB实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复