(28)QPSK调制信号使用矩形脉冲成形的误符号率和误比特率MATLAB仿真

news2024/11/27 18:36:35

文章目录

  • 前言
  • 一、系统模型说明
  • 二、MATLAB仿真代码
  • 三、MATLAB仿真结果
  • 四、仿真结果分析


前言

在QPSK通信系统仿真时,经常会加入调制信号的脉冲成形模块,本文将讨论在这种情况下信道的信噪比该如何设置,并给出MATLAB仿真代码,画出性能曲线。


一、系统模型说明

发射端生成随机序列,然后进行格雷码映射,随后送入QPSK调制器,得到QPSK符号,对QPSK符号进行矩形脉冲成形。矩形脉冲成形完成QPSK符号的插值,插值因子是一个常数,决定了一个QPSK符号形成矩形脉冲的过程中重复的次数。

经矩形脉冲成形后的信号送入awgn信道,信道对信号叠加噪声后送至接收端。

在接收端,在一个调制符号的持续时间内对接收进行信号进行积分取均值,然后进行QPSK解调、格雷码逆映射。

最终对比收发符号,计算出误符号率误比特率,完成对系统的性能评估。

在整过程中,终端说明了矩形脉冲成形对系统性能的影响。

二、MATLAB仿真代码

代码如下:

clc
clear all
close all
nSamp = 8;                                                    % 矩形脉冲的取样点数
numSymb = 1000000;                                            % 每种SNR下的传输的符号数
M = 4;                                                        % QPSK符号集中的符号数
SNR = -3:5;                                                   % SNR的范围
graycode = [0 1 3 2];                                         % Gray编码格式

N = length(SNR);
BER = zeros(1,N);
SER = zeros(1,N);
BER2 = zeros(1,N);
SER2 = zeros(1,N);
for k = 1:N
    msg = randsrc(1,numSymb,(0:3));                            % 产生发送符号
    msg_gr = graycode(msg+1);                                 % 进行Gray编码影射
    msg_psk = pskmod(msg_gr,M);                                % QPSK调制,也即形成QPSK的星座
    msg_tx = rectpulse(msg_psk,nSamp);                         % 矩形脉冲成形(插相同的值)
  
    msg_rx = awgn(msg_tx,SNR(k),'measured');                  % 通过AWGN信道
    
    msg_rx_down = intdump(msg_rx,nSamp);                       % 匹配滤波相干解调 %intdump函数在一个符号周期内对信号msg_rx取平均值
    msg_gr_demod = pskdemod(msg_rx_down,M);                    % QPSK解调
    
    msg_demod = graycode(msg_gr_demod+1);                     % Gray码逆映射

    [errorBit, BER(k)] = biterr(msg, msg_demod, log2(M));     % 计算BER
    [errorSym, SER(k)] = symerr(msg, msg_demod);              % 计算SER
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % 去掉成形滤波(每个符号一个采样值)
    msg_rx_psk = awgn(msg_psk,10*log10(nSamp)+SNR(k),'measured'); % 通过AWGN信道 % 其中nSamp是过采样倍数
    
    msg_gr_demod = pskdemod(msg_rx_psk,M);                    % QPSK解调
    msg_demod = graycode(msg_gr_demod+1);                     % Gray码逆映射


    [errorBit2, BER2(k)] = biterr(msg, msg_demod, log2(M));   % 计算BER
    [errorSym2, SER2(k)] = symerr(msg, msg_demod);            % 计算SER   
end
scatterplot(msg_tx(1:1000))                                   % 画出发射信号的星座图
grid on
title('发射信号星座图')
xlabel('同相分量')
ylabel('正交分量')

scatterplot(msg_rx(1:1000))                                   % 画出接收信号的星座图
grid on
title('接收信号星座图')
xlabel('同相分量')
ylabel('正交分量')

figure()
semilogy(SNR,BER,'-ro',SNR,SER,'-r*','LineWidth',1.5)         % 画出BER和SNR随SNR变化的曲线
grid on
legend('BER','SER')
title('QPSK在AWGN信道下的性能(使用矩形脉冲成形)')
xlabel('信噪比(dB)')
ylabel('误符号率和误比特率')


figure()
semilogy(SNR,BER2,'-ro',SNR,SER2,'-r*','LineWidth',1.5)       % 画出BER和SNR随SNR变化的曲线
grid on
legend('BER','SER')
title('QPSK在AWGN信道下的性能(不进行成形滤波,SNR提升8倍)')
xlabel('信噪比(dB)')
ylabel('误符号率和误比特率')

三、MATLAB仿真结果

发射端的信号星座图如下:

在这里插入图片描述

接收端收到的噪声信号星座图如下:

在这里插入图片描述

性能曲线如下:

在这里插入图片描述

在这里插入图片描述

QPSK的理论误码率性能MATLAB仿真代码见:
(7)MATLAB:QPSK理论误符号率和理论误比特率

四、仿真结果分析

仿真中,矩形脉冲成形对QPSK符号进行了8倍重复,这相当于增加了信号的能量。接收端对一个符号的持续时间内的采样值进行积分取均值,相当于取出一个QPSK符号,而在此过程中,8个采样值中叠加的噪声是零均值的,所以噪声在接收端的积分取均值的过程中相当于衰减了8倍。所以,对整个通信收发系统而言,相当于信噪比提升了8倍。


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

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

相关文章

滑动窗口_⽔果成篮找到字符串中所有字⺟异位词

⽔果成篮 904. 水果成篮 - 力扣(LeetCode) 相当于求数字种类不超过2的最长字字符串 我们先看一看例4.从第一个元素开始最长字符串3331,下一次从第二个位置数吗?没必要,因为只有当字符串中数字种类变为1时,…

库的相关使用

1.1 库的概念 库是由.c文件编译生成的二进制文件。 库的内部就是各种函数的实现。 windows中库的格式: xxx.dll -- 动态库 xxx.lib -- 静态库 linux中库的格式: libxxx.a --- 静态库 libxxx.so --- 动态库 2.1 静态库的制作和使用 2.1.1 静态库的…

9.2分新剧教你如何面对生活的苦涩与温暖

如果你最近在寻找一部既温暖治愈,又能引发思考的好剧,《住宅区的两人》无疑是个不错的选择。虽然没有大起大落的情节,但它却用温柔的叙事方式和细腻的情感刻画赢得了观众的心,目前在豆瓣上拿下了9.2的高分。这部剧带给人的不仅仅是…

图片懒加载(lazyload )

图片懒加载 懒加载(Lazy Loading)是一种计算机编程技术,用于延迟初始化对象或资源,直到它们实际需要使用时才进行加载或初始化。这种技术可以提高程序的启动速度和性能,减少不必要的资源消耗,特别是在处理…

基于头脑风暴优化的模糊PI控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 头脑风暴优化(Brain Storm Optimization, BSO)是一种受人类集体创新过程启发的群体智能算法。它通过模拟团队成员之间的信息交流和想法生成来寻找最优解…

【含开题报告+文档+PPT+源码】基于SpringBoot+Vue医药知识学习与分享平台的设计与实现

开题报告 本论文介绍了一个名为岐黄之家的知识学习与分享平台的设计与实现。该平台旨在为用户提供一个交流、学习和分享医药知识的空间。论文首先介绍了中医院交流平台的背景和相关研究现状。随着互联网的快速发展,中医学的学习和交流需求逐渐增多,因此…

77.【C语言】EOF的解释

1.cplusplus网的介绍 在这几篇文章提到过,但没有详细阐释过EOF的细节 24.【C语言】getchar putchar的使用E4.【C语言】练习:while和getchar的理解32.【C语言】详解scanf 75.【C语言】文件操作(3) cplusplus网的介绍 点我跳转 翻译 常量 EOF 文件结束(End-Of-Fi…

新版Win32高级编程教程-学习笔记01:应用程序分类

互联网行业 算法研发工程师 目录 新版Win32高级编程教程-学习笔记01:应用程序分类 控制台程序 强烈注意 窗口程序 启动项 程序入口函数 库程序 静态库 动态库程序 几种应用程序的区别 控制台程序 本身没有窗口,其中的doc窗口,是管…

大数据之——VWare、Ubuntu、CentOs、Hadoop安装配置

前言:这里很抱歉前几期考研专题以及PyTorch这些内容都没有更新,并不是没有在学了,而是事太鸡儿多了,前不久刚刚打完华为开发者比赛,然后有紧接着高数比赛、考研复习,因此这些后续文章都在草稿状态中&#x…

yolov8-melodic-cam-anconda环境配置及目标检测

1、基础环境安装 安装配置cuda、Anconda等环境,具体安装参考如下: https://blog.csdn.net/weixin_45702256/article/details/142555187 2、torch安装 下载链接:https://pytorch.org/ 根据配置下载对应版本,CUDA11.4 可用11.3下…

【c数据结构】队列详解!(模拟实现、OJ练习实操)

队列的概念 队列就像排队,先进先出,zz先到先得(队头的人先出去,队尾的人排在最后出去) 对比栈 队列示意图 概念:只允许在⼀端进⾏插⼊数据操作,在另⼀端进⾏删除数据操作的特殊线性表&#xff…

68 Netty

68 Netty 参考资料 【硬核】肝了一月的Netty知识点 概念 Netty 是一个高性能、异步事件驱动的网络应用框架,简化了 Java 网络编程,适用于构建高效、可扩展的网络服务器和客户端。 Netty 是基于 Java NIO 的异步事件驱动的网络应用框架,使…

访问远程桌面或共享文件夹,输入正确凭证,但提示登录没有成功或者用户名密码不正确

可以在目标机器试试以下方法: winR 打开 "gpedit.msc" 本地组策略编辑器,导航到 计算机配置 > Widnows 设置 > 安全设置 > 本地策略 > 安全选项 找到 网络访问:本地账户的共享和安全模型,把 仅来宾 改为 …

介绍各种编程语言

记得点个赞再看哦 常见的编程语言 在当今的计算机编程领域,有许多种编程语言,以下是一些常见的编程语言: Python:是一种代表简单思想的语言,具有极其简单的语法,是FLOSS(自由/开放源码软件&…

简单解析由于找不到xinput1_3.dll,无法继续执行代码的详细解决方法

电脑上突然跳出“由于找不到xinput1_3.dll,无法继续执行代码”的提示,这着实令人心烦,特别是当你正着急使用相关软件或者程序的时候。别担心,其实有五种科学有效的解决办法。大家得清楚,xinput1_3.dll是一个在众多软件…

快速总结HAT

HAT:Activating More Pixels in Image Super-Resolution Transformer 图像恢复(Image restoration)是计算机视觉中的一个经典问题,它的目的是从给定的低质量(LQ)输入重建高质量(HQ)图像。 在SwinIR基础上…

Codeforces 977 Div2 A-B

课上找空做了 A 原题 A. Meaning Mean 思路 贪心即可 代码 #include <bits/stdc.h> #define int long long using namespace std;const int N 110;int n, m, k, x, y, z; int w[N], f[N];void solve() {cin >> n;for (int i 1; i < n; i )cin >>…

理解计算机系统_程序的机器级表示(特别篇):对比move和leaq看汇编语言中数据的传递,变量和指针的映射,指针的实现

前言 以<深入理解计算机系统>(以下称“本书”)内容为基础&#xff0c;对程序的整个过程进行梳理。本书内容对整个计算机系统做了系统性导引,每部分内容都是单独的一门课.学习深度根据自己需要来定 引入 汇编代码传递数据的机制令人费解.而这部分内容又是比较基础的,需要…

自适应气泡小计

View 代码 <div class"mas-view"><div class"m-2"><span>新新消息消新消息消息新消息新消息新消息新消息新消息新消息新消息新消息新息</span></div></div>CSS 样式 .mas-view{width: 100%;height: auto;border: 1px…

[M数学] lc3164. 优质数对的总数 II(因数分解+倍增+推公式+思维+好题)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接&#xff1a;3164. 优质数对的总数 II 2. 题目解析 挺不错的一道 因数分解、倍增 的题目&#xff0c;需要一定的思维和推公式的能力才能解决。灵神的题解已经非常清晰易懂了&#xff0c;可以直接去看。 倍增思路&#xff…