(25)QPSK信号在AWGN和Rayleigh衰落信道下的性能仿真

文章目录

  • 前言
  • 一、MATLAB仿真代码
  • 二、仿真结果


前言

QPSK信号在AWGN和Rayleigh衰落信道下的性能仿真MATLAB代码。


一、MATLAB仿真代码

代码如下:

nSamp = 8;                            % 矩形脉冲的采样点数
nSymbol = 1000000;                    % 传输的符号数
ts = 1/(nSymbol*nSamp);               % samples的时间序列
% t = (0:nSymbol*nSamp-1)*ts;M = 4;                                % QPSK的调制阶数
k = log2(M);                          % 每个QPSK符号包含的比特数
SNR = -3:5;                           % 传输矩形脉冲成形信号,使用SNR (dB)
graycode = [0 1 3 2];                 % Gray编码映射表BER_g = zeros(size(SNR));             % 初始化AWGN信道BER向量
SER_g = zeros(size(SNR));             % 初始化AWGN信道SER向量
BER_r = zeros(size(SNR));             % 初始化Rayleigh衰落信道BER向量
SER_r = zeros(size(SNR));             % 初始化Rayleigh衰落信道SER向量% 生成Rayleigh衰落信道
fd = 10;                              % 最大多普勒频率,单位Hz
sinNum = 10;                          % 正弦波的数量
h = Jakes_Rayleigh(fd, sinNum, ts, nSymbol*nSamp);  % 生成Rayleigh衰落%% QPSK信道仿真
for p=1:length(SNR)msg = randi([0 M-1], 1, nSymbol);               % 生成随机符号msg_gr = graycode(msg+1);                       % Gray编码映射msg_tx = pskmod(msg_gr, M);                     % QPSK调制msg_tx = rectpulse(msg_tx, nSamp);              % 矩形脉冲成形(插相同的值)% 使用AWGN信道msg_rx = awgn(msg_tx, SNR(p), '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编码逆映射[~, BER_g(p)] = biterr(msg, msg_demod, k);      % 计算BER[~, SER_g(p)] = symerr(msg, msg_demod);         % 计算SERmsg_tx1 = h .* msg_tx;                          % 信号通过Rayleigh衰落信道msg_rx1 = awgn(msg_tx1, SNR(p), 'measured');    % 衰落信号通过AWGN信道msg_rx_down1 = intdump(msg_rx1,nSamp);          % 衰落信号匹配滤波相干解调msg_gr_demod1 = pskdemod(msg_rx_down1,M);       % QPSK解调msg_demod1 = graycode(msg_gr_demod1+1);         % Gray编码逆映射[~, BER_r(p)] = biterr(msg,msg_demod1,k);       % 计算BER[~, SER_r(p)] = symerr(msg, msg_demod1);        % 计算SER
end%% 画图
figure()
semilogy(SNR,BER_g,'b-o',SNR,SER_g,'b-*',SNR,BER_r,'r-d',SNR,SER_r,'r-x')
grid on
legend('AWGN信道BER','AWGN信道SER', ...'Rayleigh+AWGN信道BER','Rayleigh+AWGN信道SER', ...'Location','southwest')
title('QPSK在AWGN和Rayleigh衰落信道下的性能')
xlabel('信噪比(dB)')
ylabel('误比特率和误符号率')

二、仿真结果

在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

霍夫圆型硬币检测Matlab程序

1. 图像读取和预处理 使用MATLAB的uigetfile函数读取图像,可以从文件系统中选择图像文件。读取的图像随后经过灰度化处理,将彩色图像转换为灰度图像,以降低计算复杂度并去除不必要的颜色信息。 2. 中值滤波 在图像预处理过程中,…

uni-app 打包成app时 限制web-view大小

今天对接一个uni-app的app 内置对方h5 web-view的形式 需要对方在web-view顶部加点东西 对方打的app的web-view始终是全屏的状态,对方表示做不到我要的效果 emmmmmm。。。。。。 于是乎 自己搭了个demo 本地h5跑起来审查了下代码,发现web-view是给绝对定…

EasyOCR——超强超便捷的OCR开源算法介绍与文本检测模型CRAFT微调方法

背景 最近在实际操作阿拉伯文小语种OCR功能的时候,尝试了诸多开源算法,但效果均不尽如人意。 说实在的,针对阿拉伯文的OCR开源算法,若仅仅是效果没那么优秀,比如识别率能有个70%80%,我还能微调微调&#…

例行性工作(at,crontab)

(一)单一执行的例行性工作: ----at (1)原理:仅处理执行一次就结束了 (2)命令及其解释: (2.1)at命令格式:at [参数] [执行时间] &am…

C++ Builder XE12关于KonopkaControls与TMS VCL UI Pack组件的安装

1、先打开open project,选中安装的组件工程,并打开。 2、在option中设置 3、点击编译并进行安装install

【SpringAI】(一)从实际场景入门大模型——适合Java宝宝的大模型应用开发

一、简单场景介绍 假设你需要为一个商城项目接入一个基于SpringAI的智能客服系统,现在我们来基本模拟一下: 当我通过系统提问,大模型会针对我的问题进行回答。 当我们通过程序提问时,SpringAI会将我们的提问封装成Prompts&#x…

一分钟带你认清Java抽象类

abstrat——抽象,抽象类真的有像它的名字一样那么抽象吗?其实不然,它只是一个比较特殊的类别,我们只需要简单地认清它的作用就行,一起来看看吧~ 抽象类的概念 首先我们要明确一个事情:在面向对象的概念中&…

基于vue框架的宠物管理系统fyv66(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:用户,宠物分类,宠物信息,宠物用品,用品分类,洗护类型,商家,宠物洗护 开题报告内容 基于Vue框架的宠物管理系统开题报告 一、背景与意义 随着城市化进程的加速和生活水平的提高,宠物已成为许多家庭的重要成员,宠…

RabbitMQ service is already present - only updating service parameters

Windows下卸载RabbitMQ之后,然后重新注册RabbitMQ服务的时候,报错以下信息: D:\software\rabbitmq-server-4.0.2\rabbitmq_server-4.0.2\sbin>D:\software\rabbitmq-server-4.0.2\rabbitmq_server-4.0.2\sbin\rabbitmq-service.bat install RabbitMQ service is already …

FFmpeg 简介及其下载安装步骤

目录 一、FFmpeg 简介 二、FFmpeg 安装步骤 2.1 打开官网 2.2 选择FFmpeg系统版本 2.3 下载FFmpeg压缩包 2.4 将下载好的压缩包进行解压 2.5 设置环境变量 2.5.1 在搜索栏中搜索【环境变量】,然后单击将其打开 2.5.2 找到系统变量中的【Path】,点…

Python异常处理详解:try, except, else, finally的使用方法与示例

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…

力反馈手套如何在VR培训解决方案中为用户提供沉浸式体验?

在VR训练中如何为用户带来更加沉浸式的使用体验一直是该领域不断向前探索的发展方向。力反馈手套的融入为VR训练中的沉浸式交互指出了全新的发展方向。通过使用像SenseGlove Nova这样的虚拟现实力反馈手套,用户能够在VR虚拟训练场景中真实的感受到虚拟物体的尺寸大小…

uniapp 小程序0到1教程

先说明一下,uni-app的文档很乱 一、注册微信小程序 如果你还没有微信公众平台的账号,请先进入微信公众平台首页,点击 “立即注册” 按钮进行注册。注册的账号类型可以是订阅号、服务号、小程序以及企业微信,我们选择 “小程序”…

java代码生成器集成dubbo,springcloud详解以及微服务遐想

摘要 今天终于有了点空闲时间,所以更新了一下代码生成器,修复了用户反馈的bug,本次更新主要增加了dubbo和springcloud脚手架的下载功能,架子是本人亲自搭建,方便自由扩展或者小白学习使用,你也许会问为什么…

SeleniumBase在无头模式下绕过验证码的完整指南

概述 在现代Web爬虫技术中,SeleniumBase 是一款强大的自动化测试工具,能够模拟用户行为,进行高效的数据采集。然而,验证码(CAPTCHA)常常成为爬虫项目中的一个难题,尤其是在无头模式&#xff08…

基于SpringBoot的国家基础信息管理功能的设计与实现

目录 前言 一、标准信息参考 1、信息来源 二、后台基础信息的维护管理 1、实体类和Mapper类 2、业务层和控制层设计 3、前端界面实现 三、管理页面效果 1、列表管理界面 2、国家信息调整 四、总结 前言 在之前的博客中,我们基于GeoTools工具实现了全球各个…

怡然自得英语怎么说,柯桥零基础英语培训

放松的;悠然自得的 例句: Everyone here has a really laid-back attitude. 这里的每个人都是一副优哉游哉的态度。 Visitors seeking deserted and unpolluted beaches and a laid-back atmosphere should go elsewhere. 而寻求静谧、清洁的海滩和…

软件测试面试200问(附30W字面试文档)

Part1 1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求自…

用gost建立私密的内网穿透网络

内网空透是一项非常有用的东西。 现有比较常见的是用FRP,但是FRP需要配置,文档还挺麻烦。 其实gost是一款功能强大的网络神器,可以轻松实现内网穿透。(内网代理) 本文介绍的是升级版内容,客户端也需要go…

过孔对信号质量的影响(方式、仿真、结论)

概述: 关于过孔的作用(信号孔、电源孔、地孔、机械定位孔、散热通风孔),本文主要叙述过孔在焊盘直径、过孔反焊盘直径、有无非功能焊盘、过孔残桩长度等方面对信号质量带来的影响。 一、 过孔影响信号质量的方式 过孔是PCB上的…