(7)MATLAB:QPSK理论误符号率和理论误比特率

news2024/11/25 16:19:41

文章目录

  • 前言
  • 一、QPSK系统的平均误码率
  • 二、QPSK系统的平均误比特率
    • 1.根据误码率计算从QPSK符号(四进制)译为比特串的比特错误率。
    • 2.使用最佳接收的误比特率计算公式。
  • 三、MATLAB代码实现与结果
    • 1.代码实现
    • 2.性能曲线画图
  • 总结
  • 参考资料


前言

本文给出QPSK的理论误符号率与理论误比特率公式,并给出MATLAB代码实现,画出性能曲线。


一、QPSK系统的平均误码率

QPSK最佳接收的平均误符号率(用Ps表示)由下式给出:

在这里插入图片描述

其中,Q(x)为Q函数。
注意:公式中的Eb/N0取线性值。下文代码中需要将分贝值转换为线性值,用于画出性能曲线。

二、QPSK系统的平均误比特率

计算QPSK最佳接收的平均误比特率(用Pb表示)一般有两种方法:

1.根据误码率计算从QPSK符号(四进制)译为比特串的比特错误率。

对于多进制调制而言,若比特到符号的映射采用格雷编码,且假设符号错误只发生在相邻符号之间,这意味着一个错误符号中只包含一个比特错误。由于一个QPSK调制符号包含两个传输比特,所以对于采用格雷编码的QPSK最佳接收,有

在这里插入图片描述

2.使用最佳接收的误比特率计算公式。

对于QPSK最佳接收,其平均误比特率也可由下式给出:

在这里插入图片描述

其中,erfc(x)为互补误差函数。Q函数与互补误差函数的关系如下:
在这里插入图片描述

在这里插入图片描述

三、MATLAB代码实现与结果

1.代码实现

QPSK系统的理论误符号率和理论误比特率的MATLAB代码实现如下:

clc
close all
clear all

%% QPSK理论误符号率
EbNodBVec = 0:2:12;                           % Eb/No values to simulate in dB

EbNoLin = 10.^(EbNodBVec/10);                 % converting EbNo from dB to linear scale
q = qfunc(sqrt(2*EbNoLin));

% 误符号率
theorSER = 2 * q .* (1-q/2);                  % Digital Communication

%% QPSK理论误比特率
% 误比特率(由误符号率导出)
theorBER = theorSER./2;                       % Digital Communication

% 误比特率(由理论公式得出)
% theorBER = q;                               % 使用Q函数
% theorBER = 0.5 .* erfc(sqrt(EbNoLin));      % 使用互补误差函数

%% 使用库函数berawgn得到QPSK的误比特率(BER)和误符号率(SER)
M = 4;                                        % 调制阶数Modulation order
[berQPSK, serQPSK] = berawgn(EbNodBVec,'psk',M,'nondiff');

%% 画图对比
figure();
semilogy(EbNodBVec,serQPSK,'o',    EbNodBVec,berQPSK,'*', ...
         EbNodBVec,theorSER,'b-',  EbNodBVec,theorBER,'r-');
legend('Theoretical Symbol error rate',                   'Theoretical Bit error rate', ...
       'Theoretical Symbol error rate(use berawgn)',      'Theoretical Bit error rate(use berawgn)', ...
       'Location','SouthWest');
xlabel('Eb/No (dB)');
ylabel('Error Probability');
title('Symbol and Bit Error Probability - QPSK');
grid on;

2.性能曲线画图

代码运行结果画图如下:

在这里插入图片描述


总结

MATLAB中可以使用berawgn函数得到AWGN信道的误比特率(BER)和误符号率(SER)。为了理解BER和SER的理论计算过程,本文给出了MATLAB代码实现,并通过和berawgn结果对比验证了一致性。

参考资料

1.北邮《通信原理》,周炯磐、庞沁华、续大我、吴伟陵、杨鸿文等
2.Digital Communication,Mehmet Şafak

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2187803.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv8改进,YOLOv8改进主干网络为GhostNetV2(华为的轻量化架构)

摘要 摘要:轻量级卷积神经网络(CNN)专为移动设备上的应用而设计,具有更快的推理速度。卷积操作只能在窗口区域内捕捉局部信息,这限制了性能的进一步提升。将自注意力引入卷积可以很好地捕捉全局信息,但会极大地拖累实际速度。本文提出了一种硬件友好的注意力机制(称为 D…

[深度学习][python]yolov11+deepsort+pyqt5实现目标追踪

【算法介绍】 YOLOv11、DeepSORT和PyQt5的组合为实现高效目标追踪提供了一个强大的解决方案。 YOLOv11是YOLO系列的最新版本,它在保持高检测速度的同时,通过改进网络结构、优化损失函数等方式,提高了检测精度,能够同时处理多个尺…

系统架构设计师④:计算机网络

系统架构设计师④:计算机网络 TCP/IP协议族 模型如下: 常用的协议及端口号: 各个协议能力介绍: TCP与UDP的对比: DNS协议 DSN:域名系统( Domain Name System) 支持两种查询方式 : ①递…

MATLAB中qmr函数用法

目录 语法 说明 示例 线性系统的迭代解 使用指定了预条件子的 qmr 提供初始估计值 使用函数句柄代替数值矩阵 qmr函数的功能是求解线性系统 - 拟最小残差法。 语法 x qmr(A,b) x qmr(A,b,tol) x qmr(A,b,tol,maxit) x qmr(A,b,tol,maxit,M) x qmr(A,b,tol,maxit,…

蓝桥杯【物联网】零基础到国奖之路:十八. 扩展模块之光敏和AS312

蓝桥杯【物联网】零基础到国奖之路:十八.扩展模块之光敏和AS312 第一节 硬件解读第二节 CubeMX配置第二节 代码 第一节 硬件解读 光敏和AS312如下图: 光敏电阻接到了扩展模块的5号引脚,5号引脚接了2个电阻,R8和光敏电阻。我们通过ADC读取这…

RNN:我们一直忽略的宝藏?揭开递归神经网络的真正潜力

说到AI,我们第一个想到的可能是ChatGPT、Transformer这些大名鼎鼎的技术。但你有没有想过,其实我们“遗忘”的RNN(递归神经网络)可能才是真正的宝藏?最近有一篇论文提到一个耐人寻味的问题:“RNN真的是我们唯一需要的技术吗?” 这个问题不仅让我陷入深思,也引发了对RNN…

SpringSession;基于Redis的SpringSession实现;实现session共享的三种方式

一,SpringSession简介 是SpringCloud下管理session的框架,在微服务架构中,由于应用了分布式的思想,session无法做到内存中互通,需要一个框架来实现各个微服务中session数据共享,SpringSession解决了这个问题…

Unity 3D 游戏发布一口气讲完!(o-ωq)).oO 困

Unity 3D PC平台发布 PC 是最常见的游戏运行平台。 随着欧美游戏的崛起,PC 平台随之发生游戏登陆大潮。 在 PC 平台上发布游戏的步骤: 打开要发布的 Unity 3D 工程,执行 File → Build Settings 菜单命令。 在 Platform 列表框中选择 PC&a…

返回索引对象中各元素的数据类型 pandas.Index.dtype

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 返回索引对象中 各元素的数据类型 pandas.Index.dtype [太阳]选择题 根据题目代码,执行idx3.dtype的结果是? import pandas as pd idx1 pd.Index([1, 2, 3, 4, 5])…

C++网络编程之TCP协议

概述 TCP,即传输控制协议,英文全称为Transmission Control Protocol,是互联网协议套件中的核心协议之一。它工作在OSI七层模型的传输层,也工作在TCP/IP四层模型的传输层。TCP协议的主要目的是:在不可靠的网络环境中提供…

基础算法--枚举

枚举算法是一种简单而有效的算法,它通过枚举所有可能的情况来解决问题。它通常用于解决问题规模比较小的问题,因为它的时间复杂度很高,随着问题的规模增加,算法的效率会急剧下降。 枚举算法的基本思路是通过循环遍历所有可能的情…

(C语言贪吃蛇)13.实现贪吃蛇四方向的移动

目录 前言 原代码预览 解决方法⚠️ 运行效果 总结 前言 我们上节通过Linux线程实现了两个while(1)同时运行,这样就可以一边控制方向一遍刷新出贪吃蛇的身体节点了。本节我们就来实现贪吃蛇四方向的移动。 (此图片为最终效果) 原代码预览 我们之前的代码是通过…

6.模拟电子技术——共集电极,共基极,多极放大电路

写在前面 这个是第六次的笔记,祝大家学习愉快 笔记部分 1.共集电极放大电路 首先,我们再复习一遍组态判断:基极进,发射极出,说明是共集电极放大电路。可能读者已经知道一些结论,先抛开这些,我…

Kubernetes-环境篇-02-ubuntu开发环境搭建

1、ubuntu基础环境 # 更新apt软件源 sudo apt update# 安装git sudo apt install git# 安装python3 sudo apt install -y python3 python3-pip# 安装vim sudo apt install vim2、安装go 2.1 下载go安装包 wget https://golang.google.cn/dl/go1.23.2.linux-amd64.tar.gz2.2 …

第十二届蓝桥杯嵌入式省赛程序设计题解析(基于HAL库)(第一套)

一.题目分析 (1).题目 (2).题目分析 1.串口功能分析 a.串口接收车辆出入信息:通过查询车库的车判断车辆是进入/出去 b.串口输出计费信息:输出编号,时长和费用 c.计算停车时长是难点&#x…

深度学习-----------------机器翻译与数据集

目录 机器翻译与数据集下载和预处理数据集预处理步骤词元化词汇表该部分总代码 固定长度阶段或填充该部分总代码 转换成小批量数据集用于训练训练模型总代码 机器翻译与数据集 import os import torch from d2l import torch as d2l下载和预处理数据集 #save d2l.DATA_HUB[fr…

被字节恶心到了

字节 日常逛 xhs 看到一篇吐槽贴,表示被公司恶心到了: 这位网友表示,最近是公司举办了 Q2 和 H1 的优秀员工表彰,自己的 1(直属领导)评上了,但仔细一看,1 获奖的所有产出都是自己的&…

sql注入第7关(学习记录)

看到这里好像和前面的不一样了,多了个use outfile 先输入个符号,看报错,还是得看别人的教程,通过查找,好像要通过图片来进行注入,ok呀,又是新的方式, 首先我们需要知道他的闭合方式…

uniapp+Android智慧居家养老服务平台 0fjae微信小程序

目录 项目介绍支持以下技术栈:具体实现截图HBuilderXuniappmysql数据库与主流编程语言java类核心代码部分展示登录的业务流程的顺序是:数据库设计性能分析操作可行性技术可行性系统安全性数据完整性软件测试详细视频演示源码获取方式 项目介绍 老年人 登…

算法 | 鹈鹕算法POA-Transformer-LSTM多变量回归预测

🔥 内容介绍 近年来,随着大数据时代的到来和计算能力的飞速提升,对复杂系统进行精确预测的需求日益增长。多变量时间序列预测作为一项关键技术,广泛应用于金融、能源、交通等诸多领域。传统的预测方法,例如ARIMA和多元…