OFDM系统同步技术的matlab仿真,包括符号定时同步,采样钟同步,频偏估计

news2025/1/16 0:55:21

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

       在单载波系统中,载波频率的偏移只会对接收信号造成一定的幅度衰减和相位旋转,这可以通过均衡等方法来加以克服。而对于多载波系统来说,载波频率的偏移会导致子信道之间产生干扰。OFDM系统内存在多个正交子载波,其输出信号是多个了信道信号的叠加,由于子信道相互覆盖,这就对它们之间的正交性提出了严格的要求。无线信道时变性的一一种具体体现就是多普勒频移,多普勒频移与载波频率以及移动台的移动速度都成正比。信道带宽小于多普勒展宽的移动信道称作快衰落信道,信道冲激响应在符号周期内变化很快,即信道的相干时间比发送信道的符号周期要短。多普勒展宽会导敛频率发生弥散(时间性衰落),引发信产生畸变。从频域上看,信号失真随发送信道带宽的多普勒扩展的增加而加剧。因此,对于要求子载波保持严格同步的正父频分复用系统来说,载波的频率偏移所来的影响会更加严重,而且如果不采取措施对这种ICI加以克服,会对系统性能带来非常严重的地板效应,无论怎样增加信号的发射功率也不能显著的增加系统性能。

       对于移动无线通信系统来说,无线信道存在时变性,在传输过程中会出现无线信号的频率偏移,例如多普勒频移,或者由于发射机与j接收机载波频率之间存在的频率偏差,都会使得OFDM系统子载波之间的正交性遭到破坏,从而导致ICI。因此如何减少ICl对系统性能的影响,是OFDM系统性能得到广泛应用的前提条件之一。频率偏差对OFDM系统非常个利,在系统设计中起着很重要的作用。另外,消除相位噪声在无线OFDM系统中也是一个很难解决的问题。
        由于OFDM系统要利用导频符号来进行信道估计,所以同时利用导频符号和循环前缀进行定时估计。

        OFDM是一种子载波相互混叠的多载波调制,因此它除了具有上述多载波调制的优势外,还具有更高的频谱利用率。OFDM选择时域相互正交的子载波,它们虽然在频域互相混叠,却仍能在接收端被分离出来。

       OFDM 收发系统的整个具体工作流程是基带信号(二进制码元)经过信道编码,交织后映射到QPSK 星座,这时变成了复数序列,再经过串并变换变成并行数据流,经过IFFT调制后把数据调制到正交子载波上,完成频谱的正交叠加,再通过并串变换,在符号间插入循环前缀CP,最后数模转换后把信号搬至工作频率,完成射频载波调制后对其发送。接收端做降频处理之后把收到的信号数字化,同步到符号定时点和频率偏差位置,去除CP,再经FFT 解调出复数序列,再经并串变换、信号逆映射、解交织、信道解码一系列变换恢复出原始数据。

        OFDM 整个系统流程中存在符号同步,载波同步,采样同步这三种形式同步。

        与单载波系统相比,OFDM系统对同步精度的要求更高,同步偏差会在OFDM系统中引起ISI及ICI。下图显示了OFDM系统中的同步要求,并且大概给出各种同步在系统中所处的位置。

        发射机与接收机之间的频率偏差导致接收信号在频域内发生偏移。如果频率偏差是子载波间隔的n(n为整数)倍,虽然子载波之间仍然能够保持正交,但是频率采用值已经偏移了n个子载波的位置,造成映射在OFDM频谱内的数据符号的误码率高达0.5。     

         同步是OFDM系统中非常关键的问题,同步性能的优劣直接影响到OFDM技术能否真正被用于无线通信领域。在OFDM系统中,存在多种级别的同步:载波同步、符号定时同以及样值同步,其中每一级别的同步都会对OFDM系统性能造成影响。这里我们首先分析了OFDM系统内不同级别的同步问题,然后在此基础上介绍了几种分别用于载波同步和符号定时同步的方法。通过分析可以看到,只要合理地选择适当的同步方法,就可以在OFDM系统内实现同步,从而为其在无线通信系统中的应用打下坚实的基础。  

2.仿真效果预览

matlab2022a仿真结果如下:

 

3.MATLAB核心程序

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
 
    %----------------------------------------------------------------
    EbNo=20;
    ofdm_Freq_I=zeros(1,length(ofdm_receive1));
    ofdm_Freq_Q=zeros(1,length(ofdm_receive1));
    ofdm_noise_I=zeros(1,length(ofdm_receive1));
    ofdm_noise_Q=zeros(1,length(ofdm_receive1));
    Noise_I=zeros(1,length(ofdm_receive1));
    Noise_Q=zeros(1,length(ofdm_receive1));
    ofdm_noise=zeros(1,length(ofdm_receive1));
    %------------------------------------------------------------------
    
    randn('state',seed_num+2);
    Noise_I=sqrt(var(real(ofdm_receive1))*10^(-EbNo/10))*randn(1,length(ofdm_receive1));
    randn('state',seed_num+4);
    Noise_Q=sqrt(var(real(ofdm_receive1))*10^(-EbNo/10))*randn(1,length(ofdm_receive1));
    ofdm_noise2_I=real(ofdm_receive1)+Noise_I;
    ofdm_noise2_Q=imag(ofdm_receive1)+Noise_Q;
    ofdm_noise2=(ofdm_noise2_I+1i*ofdm_noise2_Q);
    
    
    %%--------------------假设没有高斯白噪声------------------------------
    % ofdm_noise2=ofdm_receive1;
    
    %----------------根据第一条路径细同步---------------------------------
    ofdm_noise3((jk-2)*N_sym_fram+1:(jk-1)*N_sym_fram)=ofdm_noise2;%取细同步后的点作为帧头
    
    
    
    %+------------------------------------------------------------------
    %|                     频偏补偿
    %+------------------------------------------------------------------
    
    
    
    
    fd_est(jk)=fd_residue(jk-1);
    fs_est(jk)=fs_residue(jk-1);
    %fd_est(jk)=fd;
    %fs_est(jk)=-delta_samp;
    
    %--------------去除残余频偏------------------------------------------
    
    ofdm_noise4=ofdm_noise3((jk-2)*N_sym_fram+1:(jk-1)*N_sym_fram);%每一帧符号*帧数
    kkj=1:1:N_sym_fram;
    fd_offset=exp(-1i*2*pi*fd_est(jk).*(kkj-1)/FFTLen);
    ofdm_offset_fd=ofdm_noise4.*fd_offset;
    
    %ofdm_offset_fd=ofdm_noise4;
    
    
    %----------------串并转换--------------------------------------------
    ofdm_rank=reshape(ofdm_offset_fd,FFTLen+CPLen,sym_num+1);
    
    %----------------去CP------------------------------------------------
    ofdm_rank_noCP=ofdm_rank((CPLen+1:FFTLen+CPLen),(1:sym_num+1));
    
    %---------------  FFT-------------------------------------------------
    
    ofdm_noCP_FFT=sqrt(8)/sqrt(FFTLen)*fft(ofdm_rank_noCP);
    
    %----------------去除采样时钟----------------------------------------
    
    for nn=1:sym_num+1
        for kk=1:FFTLen
            if kk<=FFTLen/2
                fs_est_m(kk,nn)=exp(-1i*2*pi*(kk-1)/FFTLen*fs_est(jk)*(FFTLen+CPLen)*(nn-1))*exp(-1i*pi*(kk-1)*fs_est(jk)*(FFTLen-1)/FFTLen);
            else kk > FFTLen/2;
                fs_est_m(kk,nn)=exp(1i*2*pi*(FFTLen-kk+1)/FFTLen*fs_est(jk)*(FFTLen+CPLen)*(nn-1))*exp(1i*pi*(FFTLen-kk+1)*fs_est(jk)*(FFTLen-1)/FFTLen);
            end
        end
    end
    
    kkl=(jk-2)*(sym_num+1)+1:1:(jk-1)*(sym_num+1);
    ofdm_rec_FFT(1:FFTLen,kkl)=ofdm_noCP_FFT.*fs_est_m;
    
    
    %+------------------------------------------------------------------
    %|                     残余频偏跟踪
    %+------------------------------------------------------------------
    ofdm_rec_FFT2(1:FFTLen,1:sym_num+1)=ofdm_rec_FFT(1:FFTLen,kkl);
    cpilot_slot=[10,43,75,105,151,181,213,246];
    
    
    %---------------------导频抽取-----------------------------------
    
    
    for i=1:1:length(cpilot_slot)
        ofdm_sfo_pilot((1:sym_num),i)=conj(ofdm_rec_FFT2(cpilot_slot(i),1:sym_num))';
    end
    %---------------------符号间对应差分---------------------------------
    
    ofdm_sfo_pilot_diff=zeros(sym_num-2,length(cpilot_slot));
    P_num=floor(length(cpilot_slot)/2);
    for l=1:1:sym_num-2
        for k=1:1:length(cpilot_slot)
            ofdm_sfo_pilot_diff(l,k)=ofdm_sfo_pilot(l+2,k)*conj(ofdm_sfo_pilot(l+1,k)); %去除第一个符号训练序列
        end
        ofdm_sfo_pilot_C1(l)=sum(ofdm_sfo_pilot_diff(l,(1:P_num)));
        ofdm_sfo_pilot_C2(l)=sum(ofdm_sfo_pilot_diff(l,(P_num+1:end)));
    end
    
    %---------------------求残余频偏-------------------------------------
    
    ofdm_sfo_sum_C1(jk)=sum(ofdm_sfo_pilot_C1);
    ofdm_sfo_sum_C2(jk)=sum(ofdm_sfo_pilot_C2);
    
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
 
A130

4.完整MATLAB

V

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

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

相关文章

拖动布局的两种方式

一种是弹窗的拖动布局&#xff0c;一种是非弹窗。 代码如下&#xff1a; 非弹窗&#xff1a;这里加载了一个本地的视频 import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.view.MotionEvent; import an…

Go1.19.3 map原理简析

map简析 map是一个集数组与链表(美貌与智慧)特性于一身的数据结构&#xff0c;其增删改查时间复杂度都非常优秀&#xff0c;在很多场景下用其替代树结构。关于map的特性请自行学习。 Go语言在语言层面就支持了map&#xff0c;而非其他语言(如Java)通过外置类库的方式实现。 使…

【LSSVM回归预测】基于matlab天鹰算法优化最小二乘支持向量机AO-LSSVM数据回归预测【含Matlab源码 1848期】

⛄一、天鹰算法优化最小二乘支持向量机LSSVM简介 1 最小二乘支持向量机 最小二乘支持向量机是支持向量机的一种改进算法[9,10],它将SVM算法中的不等式约束转化为等式约束,采用最小二乘线性系统作为损失函数代替支持向量机所采用的二次规划方法,以下介绍了该方法的基本原理。 …

DSPE-PEG-DBCO磷脂聚乙二醇二苯基环辛炔简介

名称 磷脂聚乙二醇二苯基环辛炔 DSPE-PEG-DBCO 中文名称 二硬脂酰基磷脂酰乙醇胺-聚乙二醇-二苯基环辛炔 英文名称 DSPE-PEG-DBCO 溶剂 部分常规有机溶剂 存储条件 -20冷冻保存&#xff0c;惰性气体保护 保存时间 1年 PEG常规分子量 2000 3400 5000 DSPE-PEG-DBCO DSPE&a…

typescript 类型运算探讨

以函数的方式来看typescript 类型运算尖括号 <>TypeScript 类型运算符1、extends2、keyof3、infer4、in题目示例对于初接触typescript的前端开发者来说&#xff0c;我们可能会对typescript的类型运算感到很陌生和难以理解。现在想说的是&#xff0c;其实我们可以换另外一…

我国服务行业体经济尽显强大韧性 2021年全年总体保持恢复性增长态势

根据观研报告网发布的《2022年中国服务行业分析报告-行业发展监测与投资潜力分析》显示&#xff0c;所谓服务业&#xff0c;不是指商品的买卖&#xff0c;而是指通过各种不同的服务工作&#xff0c;让顾客得到满足。 服务业有传统服务业与现代服务业之分。传统服务业是指为人们…

【云原生进阶之容器】第一章Docker核心技术1.7节——Docker镜像技术剖析

1 容器镜像概述 1.1 什么是镜像 镜像就是一个可执行独立运行的软件包。包含应用运行所必须的文件和依赖包;镜像可以理解为类或者模板,只要在容器的环境下开箱即用; Docker容器与镜像的关系: 1.2 bootfs和rootfs 通常而言,Linux的操作系统由两类文件系统组成:bootfs…

一、Kubernetes基本介绍和功能架构

1、kubernetes 概述 kubernetes&#xff0c;简称 K8s&#xff0c;是用 8 代替 8 个字符“ubernete”而成的缩写。是一个开源 的&#xff0c;用于管理云平台中多个主机上的容器化的应用&#xff0c;Kubernetes 的目标是让部署容器化的 应用简单并且高效(powerful),Kubernetes 提…

python中的异常捕获与传递

目录 一.了解异常 二.异常的捕获方法 1.捕获常规异常 演示 2.捕获制定异常 演示 3.捕获多个异常 演示 4.捕获所有异常 演示 5.异常else 演示 6.异常的finally 演示 三.异常的传递 一.了解异常 当我们的程序遇到了BUG&#xff0c;那么接下来有两种情况: 整个程序因…

leetcode.1971 寻找图中是否存在路径 - bfs dfs 并查集 邻接表 邻接矩阵

1971. 寻找图中是否存在路径 目录 1、bfs - 邻接矩阵 2、dfs - 邻接表 3、并查集 1、bfs - 邻接矩阵 让源点source入队 取队头遍历未标记的邻接节点并入队如果队伍里有dest目标节点 说明dest被遍历到 则return trueclass Solution { public:static const int N2*1e5;bool st[…

靴子落地:ChatGPT 国内发展或被「拉手刹」

内容一览&#xff1a;深度合成服务在满足用户需求、改进用户体验的同时&#xff0c;也被一些不法人员用于制作、复制、发布、传播违法信息&#xff0c;诋毁、贬损他人名誉、荣誉&#xff0c;仿冒他人身份实施诈骗等违法行为&#xff0c;如今针对这一技术的管理规定终于发布了。…

游戏开发 mask和RectMask2D区别

1. Mask遮罩的大小与形状依赖于Graphic&#xff0c;而RectMask2D只需要依赖RectTransform 2. Mask支持圆形或其他形状遮罩&#xff0c; 而RectMask2D只支持矩形 3. Mask会增加drawcall 4、mask的性质&#xff1a; 性质1&#xff1a;Mask会在首尾&#xff08;首Mask节点&…

Jenkins(4)— 配置钉钉通知

1、创建钉钉机器人 自定义机器人接入 - 钉钉开放平台 群设置 >> 智能群助手 >> 添加机器人 >> 自定义webhook机器人 输入自定义钉钉机器人名字和选择必要的安全设置。 注意&#xff1a;复制上面的加密信息和Webhook&#xff0c;后面在jenkins配置钉钉机器…

[附源码]计算机毕业设计Python的家政服务平台(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

解决jeecgboot框架下单点登录后,页面刷新后,会自动跳转到单点登录服务的登录页问题

1.配置单点服务&#xff0c;可参考官方文档&#xff1a;http://doc.jeecg.com/2044170 - 打开.env文件,UE_APP_SSOtrue即代表开启SSO登录 NODE_ENVproduction VUE_APP_PLATFORM_NAMEJeecg-Boot 企业级快速开发平台 VUE_APP_SSOtrue- 打开.env.development文件&#xff0c;修改…

黑*头条_第7章_app端文章搜索(新版)

黑*头条_第7章_app端文章搜索(新版) 文章目录黑*头条_第7章_app端文章搜索(新版)1) 今日内容介绍1.1)App端搜索-效果图1.2)今日内容2) 搭建ElasticSearch环境2.1) 拉取镜像2.2) 创建容器2.3) 配置中文分词器 ik2.4) 使用postman测试3) app端文章搜索3.1) 需求分析3.2) 思路分析…

m基于CNN卷积神经网络的IBDFE单载波频域均衡算法

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 单载波频域均衡(SC-FDE)是解决符号间干扰(ISI)问题的一项重要技术。相比于单载波时域均衡(SC-TDE)技术和正交频分复用(OFDM)技术,SC-FDE技术具有复杂度低、峰均功率比小的优点。但是,SC-FDE技术中…

Android 测试文字编码格式

测试文字编码格式&#xff0c;与设置字符串格式 调用&#xff1a; juniversalchardet-1.0.3.jar app里的Build.gradle implementation files(libs\\juniversalchardet-1.0.3.jar) java调用&#xff1a; import org.mozilla.universalchardet.UniversalDetector;/*** 测试编…

面试:分库分表经典15连问

目录 1. 我们为什么需要分库分表 1.1 为什么要分库 1.2 为什么要分表 2. 什么时候考虑分库分表&#xff1f; 3. 如何选择分表键 4.非分表键如何查询 5. 分表策略如何选择 5.1 range范围 5.2 hash取模 5.3 一致性Hash 6. 如何避免热点问题数据倾斜&#xff08;热点数…

LaTex教程(二)——LaTeX排版

文章目录1. 中文宏包2. 字符2.1 空格和分段2.2 标点符号2.2.1 引号2.2.2 连字号和破折号2.2.3 省略号3. 文字强调4. 断行断页1. 中文宏包 ctex 宏包和文档类是对CJK 和xeCJK 等宏包的进一步封装。ctex 文档类包括 ctexart /ctexrep / ctexbook&#xff0c;是对LATEX 的三个标准…