基于OFDM+QPSK的通信系统误码率matlab仿真,对比不同同步误差对系统误码率的影响

news2025/1/16 16:44:29

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

1.1 OFDM 原理

1.2 QPSK 原理

1.3 同步误差对系统性能的影响

5.算法完整程序工程


1.算法运行效果图预览

2.算法运行软件版本

MATLAB2022A

3.部分核心程序

...............................................................
    for ij3=[-20,0,20]  % 同步误差
    
        if Pilot_OFDM(1) == -1 
           H = exp(1i*2*pi*[1:NFFT]*ij3/NFFT);
           HInv = 1./H;
        end

        for snr = SNRs

            Rdata = awgn(Subframe,snr,'measured'); % 添加 AWGN 噪声

             for ij4 = 0:NSymbol-1
                 OFDMSymbol     =  Rdata(ij4*(OFDMSymLen)+1: (ij4+1)*OFDMSymLen);     
                 if ij3 <= 0  
                    OFDM_Sym_cp = OFDMSymbol(CPLen+1+ij3:OFDMSymLen+ij3); 
                 else 
                    OFDM_Sym_cp =[OFDMSymbol(CPLen+1+ij3:OFDMSymLen) zeros(1,ij3)];
                 end
                 QPSK_Sym = (fft(OFDM_Sym_cp,NFFT)/sqrt(NFFT));
                 %信道估计使用导频符号
                 if sum(ij4 == Pilot_OFDM) && Pilot_OFDM(1) ~= -1
                    H             = zeros(1,NFFT);
                    H(Loc_Pilot)  = (QPSK_Sym(Loc_Pilot)/PilotSymbol);
                    H(find(H==0)) = interp1(Loc_Pilot,H(Loc_Pilot),find(H==0));
                    HInv          = 1./H;
                 end
                
                 QPSK_Sym = HInv.*QPSK_Sym ./ (abs(HInv));
                 if sum(ij4 == Pilot_OFDM)&& Pilot_OFDM(1) ~= -1 
                    QPSK_Sym2 = QPSK_Sym(Loc_Carriers);
                 else
                    QPSK_Sym2 = QPSK_Sym(Data_Carriers);
                 end
        end
        Index = 1;
        BER2    = [BER2;BER1 ];
        plotIdx = plotIdx+1;
    end
    BER3= BER3+BER2;   
end

figure;
semilogy(SNRs,BER3(1,:)/1000,'-bs',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
hold on
semilogy(SNRs,BER3(2,:)/1000,'k-^',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.2,0.9,0.5]);
hold on
semilogy(SNRs,BER3(3,:)/1000,'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0]);
hold on
xlabel(' SNR(db)');
ylabel(' BER1 ');
legend('同步误差:-20','无同步误差','同步误差:20');
grid on    
0041 

4.算法理论概述

1.1 OFDM 原理

         OFDM 是一种多载波调制技术,将高速数据流分成多个低速数据流,每个低速数据流用不同的正交子载波传输,从而提高了频谱利用率和抗多径衰落的能力。

1.2 QPSK 原理

        QPSK 是一种基于相位的调制方式,将每两个连续的比特映射到不同的相位状态,实现数据的传输。

1.3 同步误差对系统性能的影响

        同步误差是指接收端时钟与发送端时钟之间的时间偏移,它可能由于时钟漂移、频率偏差、采样时刻的不准确等原因引起。在 OFDM 系统中,同步误差会导致接收端无法准确地解析每个子载波的相位和幅度,从而影响信号的解调和数据的正确解析。

       同步误差会导致解调时的相位和幅度失配,从而增加信号的误码率。特别是在高信噪比条件下,同步误差对误码率的影响更为显著,因为此时信号的主要误差源来自同步误差。

        同步误差引起的频偏和相位失配会导致解调后的信号失真。失真的信号可能无法正确解析,甚至无法通过信号解析器,从而造成严重的通信质量问题。

5.算法完整程序工程

OOOOO

OOO

O

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

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

相关文章

运维监控学习笔记3

DELL的IPMI页面的登录&#xff1a; 风扇的状态&#xff1a; 电源温度&#xff1a;超过70度就告警&#xff1a; 日志信息&#xff1a; 可以看到更换过磁盘。 iDRAC的设置 虚拟控制台&#xff1a;启动远程控制台&#xff1a; 可以进行远程控制。 机房工程师帮我们接远程控制&…

Confluence(wiki)搭建遇到创建的文档乱码问题的解决

在公司使用这个知识管理协同的工具的时候&#xff0c;感觉用起来还不错&#xff0c;自己就想着搭建一套玩玩&#xff1b; 用的是docker搭建&#xff0c;具体就是搞docker compose文件管理起来&#xff0c; 但是当我搭建完毕之后创建学习目录的时候发现全是&#xff1f;&#x…

leetcode---357单周赛

题目列表 2810. 故障键盘 2811. 判断是否能拆分数组 2812. 找出最安全路径 2813. 子序列最大优雅度 一、故障键盘 这题可以直接模拟&#xff0c;时间复杂度是O(n^2)&#xff0c;代码如下 class Solution { public:string finalString(string s) {string x;for(int i0;i<…

asp.net core webapi如何执行周期性任务

使用Api执行周期性任务 第一种&#xff0c;无图形化界面1.新建类&#xff0c;继承IJob&#xff0c;在实现的方法种书写需要周期性执行的事件。2.编写方法类&#xff0c;定义事件执行方式3.在启动方法中&#xff0c;进行设置&#xff0c;.net 6中在program.cs的Main方法中&#…

猿人学刷题系列(第一届比赛)——第二题( js 混淆 - 动态cookie 1)

题目&#xff1a;提取全部5页发布日热度的值&#xff0c;计算所有值的加和 地址&#xff1a;https://match.yuanrenxue.cn/match/2 思路分析 本题我们会简单说一下两种不同的方式去处理&#xff0c;一种是不还原混淆代码直接从源代码硬扣生成逻辑&#xff0c;另一种则是还原…

小程序具体开发

window 导航栏 属性名类型默认值作用navigationBarTitleText string字字符串导航栏标题内容navigationBarBackgroundColorHexcolor#000000设置导航栏背景颜色&#xff08;比如荧黄色 #ffa&#xff09;navigationBarTextStylestringwhite设置导航栏标题的颜色&#xff08;仅含有…

运维监控学习笔记2

硬件监控&#xff1a; 1&#xff09;使用IPMI 2&#xff09;机房巡检 路由器和交换机&#xff1a; 使用SNMP&#xff08;简单网络管理协议&#xff09;进行监控。 Linux 安装snmp&#xff1a; yum install -y net-snmp net-snmp-utils 说明&#xff1a;net-snmp是安装在snm…

swager web服务无法显示问题

如果指定了扫描其他包 那么web文件夹里面的就扫描不到 需要加上扫描扫描web的 &#xff0c;默认什么也没有就会扫描web文件夹 但是其他模块的扫描不到 指定了扫描其他模块就需要再次指定扫描该web文件夹

HCIP VRRP技术

一、VRRP概述 VRRP&#xff08;Virtual Router Pedundancy Protocol&#xff09;虚拟路由器冗余协议&#xff0c;既能够实现网关的备份&#xff0c;又能够解决多个网关之间互相冲突的问题&#xff0c;从而提高网络可靠性。 局域网中的用户的终端通常采用配置一个默认网关的形…

私密相册管家-加密码保护私人相册照片安全

App Store史上最安全、最强大、最卓越的私密相册App&#xff01;再也不用担心私密照片视频被别人看见了&#xff01;
私密相册为你提供多重密码保护机制、简单便捷的照片存储空间&#xff0c;完美地将你的私密照片远离一切恶意偷窥者的窥探&#xff01; 【产品功能】
 √ 支…

如何培养对技术的热爱

这篇博文主要针对计算机专业相关的同学&#xff0c;对于理工科专业的同学有一定的借鉴意义&#xff0c;对于其他专业的同学&#xff0c;还请自行取舍。 背景 初学计算机&#xff0c;可能并不是每个人都能对其产生兴趣&#xff0c;更不要说从其中获得快乐。对于如何培养兴趣&a…

Python爬虫:js逆向调式操作及调式中遇到debugger问题

Python爬虫:js逆向调式操作及调式中遇到debugger问题 1. 前言2. js逆向调式操作2.1 DOM事件断点2.2 XHR/提取断点(用于请求接口参数加密处理)2.3 请求返回的数据是加密的2.4 hook定位参数 3. 调式中遇到debugger问题3.1 解决方式(一律不在此处暂停)3.2 问题&#xff1a;点击一律…

Mac超好用软件推荐

没有广告&#xff0c;良心推荐哦 刷到有福啦 非常非常感谢一路支持的大佬&#xff0c;你们的支持是我的荣幸 目录 Keka Free Download Manager Noizio Lite Microsoft 365 ​编辑 LocalSand Hidden Bar Obsidian iWork VMware Fusion SwitchHosts Xmind Listen…

通讯协议037——全网独有的OPC HDA知识一之聚合(六)实际时间最小值

本文简单介绍OPC HDA规范的基本概念&#xff0c;更多通信资源请登录网信智汇(wangxinzhihui.com)。 本节旨在详细说明HDA聚合的要求和性能。其目的是使HDA聚合标准化&#xff0c;以便HDA客户端能够可靠地预测聚合计算的结果并理解其含义。如果用户需要聚合中的自定义功能&…

matlab使用教程(14)—稀疏矩阵的运算

1.运算效率 1.1计算复杂度 稀疏运算的计算复杂度与矩阵中的非零元素数 nnz 成比例。计算复杂度在线性上还与矩阵的行大小 m 和列大小 n 相关&#xff0c;但与积 m*n&#xff08;零元素和非零元素总数&#xff09;无关。相当复杂的运算&#xff08;例如对稀疏线性方程求解&…

GDB 函数调用栈管理

栈的调用关系&#xff1a;后进先出 1、bt&#xff1a;backtrace 查看栈回溯信息 #0号栈桢表示正在执行的函数&#xff0c;在栈的最顶部。 2、frame n 切换栈桢 3、info f n 查看栈桢信息 4、直接调用函数 格式 p 函数名(参数) 或者 call 函数名(参数)(gdb) p get_time_stam…

GCC的inline内敛函数

GCC&#xff08;GNU Compiler Collection&#xff09;是一个广泛使用的编译器套件&#xff0c;它支持多种编程语言&#xff0c;包括C和C。GCC提供了一些优化特性&#xff0c;其中之一是内联函数&#xff08;inline functions&#xff09;。 内联函数是一种编译器优化技术&…

Xilinx DDR3学习总结——4、添加读写功能

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Xilinx DDR3学习总结——4、添加读写功能 前言APP端口读写测试 前言 前面modelsim已经仿真成功了了DDR3的初始化&#xff0c;但其他端口都设置成了0&#xff0c;现在就需要对…

【Spring Boot】夺名连环问(持续更新ing)

Spring的了解与特性 简单介绍&#xff1a;快速开发Spring项目的脚手架。简化Spring应用的初始搭建以及开发过程。 特性 提供了很多内置的Starter结合自动配置&#xff0c;对主流框架的无配置集成、开箱即用。即不需要自己去引入很多依赖。 并且管理了常用的第三方依赖的版本&…