我是靠谱客的博主 天真小刺猬,最近开发中收集的这篇文章主要介绍关于BPSK、QPSK的一些理解,以及MATLAB实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近在做有关矿井智能信息处理的通信仿真,在学习过程中遇到了一些问题以及自己的思考,并且将学习到的一些仿真知识记录一下,当作自己的学习笔记,也希望可以和大家交流学习。

关于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实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部