(23)DBPSK信号在Rayleigh衰落信道条件下的传输性能仿真

news2024/10/9 10:18:03

文章目录

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


前言

此示例创建了一个【频率平坦的瑞利衰落信道】对象,并使用该对象来对DBPSK信号进行衰落处理,衰落之后增加了不同信噪比的AWGN,计算出不同的信噪比值计算误码率,并和理论误码率进行了对比。


一、MATLAB仿真代码

代码如下:

% Create Rayleigh fading channel objects
chan = comm.RayleighChannel('SampleRate',1e4,'MaximumDopplerShift',100);


M = 2;                                   % DBPSK modulation order
tx = randi([0 M-1],50000,1);             % Generate a random bit stream

% Create modulator, and demodulator objects
mod = comm.DBPSKModulator;
demod = comm.DBPSKDemodulator;

dpskSig = mod(tx);                       % dpskSig=±1序列

% Apply the channel effects
sig_test = 1j*ones(50000,1);
fadedTestSig = chan(sig_test);           % 衰落
fadedSig = dpskSig.*fadedTestSig;        % 衰落作用与发射信号,得到衰落信号


figure()
plot(20*log10(abs(fadedSig)))
hold on
grid on
xlim([0,10000])
title('DBPSK衰落信号的功率')
xlabel('samples');
ylabel('Signal power(dB)');


% Create an AWGN channel object.
awgnChan = comm.AWGNChannel('NoiseMethod', 'Signal to noise ratio (SNR)');

% Create an error rate calculator object.
errorCalc = comm.ErrorRate;

% Compute error rate for different values of SNR.
SNR = 0:2:20;                % Range of SNR values, in dB.
numSNR = length(SNR);
berVec = zeros(3, numSNR);   % Preallocate a vector for BER results 

for n = 1:numSNR
   awgnChan.SNR = SNR(n);
   rxSig = awgnChan(fadedSig);   % Add Gaussian noise
   rx = demod(rxSig);            % Demodulate
   reset(errorCalc)
  
   berVec(:,n) = errorCalc(tx,rx); % Compute error rate.
end
BER = berVec(1,:);


% Compute theoretical performance results, for comparison.
BERtheory = berfading(SNR,'dpsk',M,1);

% Plot BER results.
figure()
semilogy(SNR,BERtheory,'b-',SNR,BER,'r*','LineWidth',1);
grid on;
xlabel('SNR (dB)');
ylabel('BER');
title('Binary DPSK over Rayleigh Fading Channel');
legend('Theoretical BER','Empirical BER');

二、仿真结果画图

衰落信号功率:

在这里插入图片描述

BER性能曲线:

在这里插入图片描述


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

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

相关文章

八、索引的创建与设计原则

文章目录 1. 索引的声明与使用1.1 索引的分类1.2 创建索引1.2.1 在创建表时创建索引1.2.2 在已经存在的表上创建索引1.3 删除索引2. MySQL8.0索引新特性2.1 支持降序索引2.2 隐藏索引3. 索引的设计原则3.1 数据准备3.2 哪些情况适合创建索引3.2.1 字段的数值有唯一性的限制3.2.…

Cisco Catalyst 9000 交换产品系列 IOS XE 17.15.1 发布下载,新增功能概览

Cisco Catalyst 9000 Series Switches, IOS XE Release 17.15.1 ED 思科 Catalyst 9000 交换产品系列 IOS XE 系统软件 请访问原文链接:https://sysin.org/blog/cisco-catalyst-9000/,查看最新版。原创作品,转载请保留出处。 作者主页&…

Google:敏感信息访问权限和 API 政策更新

目录 公布时间公布内容内容有关 Google Play 照片和视频权限政策的详细信息截止时间相关问题公布时间 公布日期:2023-10-25 公布内容 内容 为向用户提供更注重隐私保护的体验,我们将推出“照片和视频访问权限”政策,以减少获准针对照片/视频请求广泛权限(READ_MEDIA_IM…

探索 ACM:计算机领域的卓越组织

《探索 ACM:计算机领域的卓越组织》 在计算机科学的广袤星空中,ACM(Association for Computing Machinery,美国计算机协会)犹如一颗璀璨的巨星,散发着耀眼的光芒。 ACM 是世界上最大的计算机领域专业性学…

从给定的序列中随机抽取一个元素secrets.choice()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 从给定的序列中随机抽取一个元素 secrets.choice() [太阳]选择题 根据给定的Python代码,哪个选项是不可能输出的? import secrets sequence ["red", &qu…

PCL 法线空间下采样滤波

目录 一、概述二、代码三、结果 一、概述 对于原始点云,通过其点云法向量进行下采样,在法向量变化大的地方采样密度大,在法向量变化小的地方,采样密度小。 计算点云的空间法向量。依次计算相邻点之间的法向量夹角,以此…

Node.js管理工具NVM

nvm(Node Version Manager)是一个用于管理多个 Node.js 版本的工具。以下是 nvm 的使用方法和一些常见命令: 一、安装 nvm 下载 nvm: 地址:https://github.com/coreybutler/nvm-windows/releases访问 nvm 的 GitHub 仓…

Autodesk Flame 2025:视觉特效制作解决方案

Autodesk Flame 2025是一款功能强大的视觉特效制作解决方案,由Autodesk公司开发。它提供了出色的性能,为视觉特效艺术家成功完成制作项目提供了所需的交互性和灵活性。 以下是Autodesk Flame 2025的一些主要特点和功能: 高效的三维合成环境&…

C语言 | Leetcode C语言题解之第464题我能赢吗

题目: 题解: typedef struct HashItem {int key;bool val;UT_hash_handle hh; } HashItem;bool dfs(int maxChoosableInteger, int usedNumbers, int desiredTotal, int currentTotal, HashItem **memo) {HashItem *pEntry NULL;HASH_FIND_INT(*memo, …

C# 图像平移

图像平移:图像的平移是将一幅图像上的所有点都按照给定的偏移量在水平方向沿x轴、在垂直方向上沿y轴移动,平移后的图像与原图像大小相同。设(x0,y0) 为原图像上的一点,图像水平平移量为△x,垂直平移量为△y,则平移后点…

什么是词嵌入(Word Embedding)

1. 什么是词嵌入(Word Embedding) ⾃然语⾔是⼀套⽤来表达含义的复杂系统。在这套系统中,词是表义的基本单元。顾名思义,词向量是⽤来表⽰词的向量,也可被认为是词的特征向量或表征。把词映射为实数域向量的技术也叫词嵌⼊(word e…

【优选算法】(第二十七篇)

目录 重排链表(medium) 题目解析 讲解算法原理 编写代码 合并K个升序链表(hard) 题目解析 讲解算法原理 编写代码 重排链表(medium) 题目解析 1.题目链接:. - 力扣(LeetCod…

数据结构与算法——Java实现 31.阻塞队列

—— 24.10.8 一、问题提出 目前队列存在的问题 1.很多场景要求分离生产者、消费者两个角色、它们需要由不同的线程来担当,而之前的实现根本没有考虑线程安全问题 2.poll方法,队列为空,那么在之前的实现里会返回null,如果就是硬…

Spring Boot 进阶-深入SpringBoot的数据校验原理

在之前的分析中我们知道要想了解一个场景启动器的原理就必须要找到它对应的自动配置类。下面我们就来探索一下数据校验spring-boot-starter-validation场景启动器的原理吧? ValidationAutoConfiguration 配置类 首先我们来看在这个配置类上都有哪些条件注解,并且这些条件注解…

鸿蒙开发实战项目【硅谷租房】--- 项目介绍

目录 一、简述 二、项目资料 2.1 UI设计稿 2.2 服务器 2.3 Apifox接口JSON文件 使用 Apifox 测试接口 一、简述 这是一个基于 鸿蒙 API12 开发的移动端租房 App,用户可以使用该应用搜索租房列表、查看房屋详情、预约租房等。 该项目的tabbar包含五部分&…

OpenTelemetry 演示与 OpenTelemetry 的 Elastic 分发

作者:来自 Elastic Roger Coll 了解 Elastic 如何致力于支持用户使用 OpenTelemetry。探索我们对 OpenTelemetry Demo 的公开部署,并了解 Elastic 的解决方案如何增强你的可观察性体验。 最近,Elastic 为各种 OpenTelemetry 组件引入了 Elas…

谨防网络诈骗,天上不会掉馅儿饼

“网络诈骗现已是国际性问题。” 面对网络诈骗,风险管理工具要选且必须选。网络诈骗日益猖獗,当前背景下,IP风险画像也开始成为了防范网络诈骗的重要工具之一。 近期,一起利用AI换脸拟声技术实施的诈骗案件引起了广泛关注。 一名…

C# 获取可执行文件目录

---------------------------------------------------------------------------

OCP迎来新版本,让OceanBase的运维管理更高效

近期,OceanBase的OCP发布了新版本,全面支持 OceanBase 内核 4.3.2 及更低版本。新版本针对基础运维、性能监控、运维配置、外部集成等多个方面实现了 20余项的优化及强化措施,增强产品的易用性和稳定性,从而帮助用户更加高效地管理…

前端 接口扁平化转换树数据的方法并添加序号

最终实现图 . 1. 接口扁平化数据转树型结构数据 (递归) // 转换树行数据的方法 export const transTree (list, pidKey, idKey id) > {// 最终生成的树行结构const treeData []// 对传入进来的 数据进行遍历,查找对应的子级list.for…