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

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

1.算法描述

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

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

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

image.png

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

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

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

image.png

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

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

2.仿真效果预览
matlab2022a仿真结果如下:

image.png
image.png
image.png

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);
相关文章
|
1月前
|
算法 数据安全/隐私保护 索引
OFDM系统PAPR算法的MATLAB仿真,对比SLM,PTS以及CAF,对比不同傅里叶变换长度
本项目展示了在MATLAB 2022a环境下,通过选择映射(SLM)与相位截断星座图(PTS)技术有效降低OFDM系统中PAPR的算法实现。包括无水印的算法运行效果预览、核心程序及详尽的中文注释,附带操作步骤视频,适合研究与教学使用。
|
23天前
|
算法 数据安全/隐私保护 索引
索引OFDM调制解调系统的matlab性能仿真
本文对m索引OFDM调制解调系统性能进行了仿真分析,增加了仿真图并配有语音讲解视频,使用Matlab2022a完成仿真,代码无水印。研究了OFDM-IM技术,通过激活不同子载波组合传输额外信息,提高频谱效率和降低PAPR。提出了OFDM联合子块索引调制技术(OFDM-JS-IM)和OFDM全索引方法(OFDM-AIM),并通过遗传算法优化子块查找表,有效提升系统性能。提供了核心MATLAB程序示例。
46 3
|
2月前
|
算法
MATLAB符号计算
【10月更文挑战第9天】MATLAB不仅擅长数值计算,还具备强大的符号计算功能,支持代数运算、方程求解、微积分等。本文介绍如何使用MATLAB的符号工具箱进行符号变量定义、方程求解、微分积分及矩阵运算,并通过多个实际应用案例展示了其在机械系统、电路分析、经济优化和物理运动学等领域的应用。此外,文章还提供了符号计算的最佳实践和未来展望。
|
3月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于NSCT非采样轮廓波变换和CNN网络人脸识别matlab仿真
本项目展示了一种结合非采样轮廓波变换(NSCT)与卷积神经网络(CNN)的人脸识别系统。通过NSCT提取多尺度、多方向特征,并利用CNN的强大分类能力实现高效识别。项目包括ORL人脸库的训练结果对比,提供Matlab 2022a版本下的完整代码及详细中文注释,另有操作步骤视频指导。
|
2月前
|
算法 数据安全/隐私保护
星座图整形技术在光纤通信中的matlab性能仿真,分别对比标准QAM,概率整形QAM以及几何整形QAM
本文介绍了现代光纤通信系统中的星座图整形技术,包括标准QAM、概率整形QAM和几何整形QAM三种方法,并对比了它们的原理及优缺点。MATLAB 2022a仿真结果显示了不同技术的效果。标准QAM实现简单但效率有限;概率整形QAM通过非均匀符号分布提高传输效率;几何整形QAM优化星座点布局,增强抗干扰能力。附带的核心程序代码展示了GMI计算过程。
122 0
|
4月前
|
Windows
基于MATLAB实现的OFDM仿真调制解调,BPSK、QPSK、4QAM、16QAM、32QAM,加性高斯白噪声信道、TDL瑞利衰落信道
本文通过MATLAB仿真实现了OFDM系统中BPSK、QPSK、4QAM、16QAM和32QAM调制解调过程,并在加性高斯白噪声信道及TDL瑞利衰落信道下计算了不同信噪比条件下的误比特率。
271 4
基于MATLAB实现的OFDM仿真调制解调,BPSK、QPSK、4QAM、16QAM、32QAM,加性高斯白噪声信道、TDL瑞利衰落信道
|
4月前
|
算法 数据安全/隐私保护
基于LS算法的OFDM+QPSK系统信道估计均衡matlab性能仿真
基于MATLAB 2022a的仿真展示了OFDM+QPSK系统中最小二乘(LS)算法的信道估计与均衡效果。OFDM利用多个低速率子载波提高频谱效率,通过循环前缀克服多径衰落。LS算法依据导频符号估计信道参数,进而设计均衡器以恢复数据符号。核心程序实现了OFDM信号处理流程,包括加性高斯白噪声的加入、保护间隔去除、快速傅立叶变换及信道估计与均衡等步骤,并最终计算误码率,验证了算法的有效性。
145 2
|
4月前
|
算法
基于IEEE802.11g标准的OFDM信号帧检测matlab仿真
此项目旨在应对无线信号识别挑战,利用MATLAB/Simulink开发IEEE 802.11g OFDM信号识别算法。通过对标准的深入研究,设计并计算PLCP前导码数据,采用信号相关性进行信号鉴定。项目构建了完整的发射机模型,在AWGN信道下评估性能。通过生成特定的短训和长训序列,实现帧头检测,并模拟真实信号传输。测试使用MATLAB 2022a版本,展示了信号生成与识别的关键步骤及结果。
|
6月前
|
算法 安全 数据库
基于结点电压法的配电网状态估计算法matlab仿真
**摘要** 该程序实现了基于结点电压法的配电网状态估计算法,旨在提升数据的准确性和可靠性。在MATLAB2022a中运行,显示了状态估计过程中的电压和相位估计值,以及误差随迭代变化的图表。算法通过迭代计算雅可比矩阵,结合基尔霍夫定律解决线性方程组,估算网络节点电压。状态估计过程中应用了高斯-牛顿或莱文贝格-马夸尔特法,处理量测数据并考虑约束条件,以提高估计精度。程序结果以图形形式展示电压幅值和角度估计的比较,以及估计误差的演变,体现了算法在处理配电网状态估计问题的有效性。
|
4月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
225 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码

热门文章

最新文章