m基于OFDM的同步技术的研究,对比schmidl,minn,park,Landstrom

本文详细介绍了OFDM在短波通信中的应用及其优势,包括抗多径干扰和提高频谱利用率。文章探讨了T.Schmidl&D.Cox、Minn和Park等同步算法,并提供了MATLAB2022a的仿真结果。通过仿真,分析了不同同步算法在信道条件下的性能,为短波通信系统的同步设计提供了参考。
摘要由CSDN通过智能技术生成

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

       在现代短波通信系统中,其信道一般具有频率多样性和频率选择性,因此在短波通信过程中,多径的传播将产生信号的符号干扰和衰落。和传统的频分复用相比,OFDM通信技术可以最大限度的增加频谱利用率,同时OFDM将高速传输数据进行串并转换,从而增加子载波的符号周期,最终将频率选择性衰落的信道转换为平衰落信道。因此,OFDM技术具有优良的抗多径能力,较高的频谱利用率,在短波通信中有着十分重要的应用。

       OFDM系统模型的基本结构如下图所示:

       由于OFDM系统对多普勒频偏和定时有着较为严格的要求,因此,载波同步和符号同步是OFDM系统中的一个重要模块。同步过程分为同步捕获阶段和同步跟踪节点,目前较为常见的同步捕获算法主要包括T.Schmidl&D.Cox算法,Minn算法,Park算法以及Landstrom算法。 

       T.Schmidl&D.Cox算法(简称SC算法)主要是通过两个OFDM符号作为训练序列进行时间和频率同步,SC算法的帧结构如下图所示:

       Minn算法是在SC算法基础之上改进得到,常见的Minn算法主要有基于训练符号结构的SC改进算法以及基于滑动窗口法的SC改进算法。但是基于滑动窗口法的SC改进算法会产生较多的峰值,从而影响判决。因此,本章节采用基于训练符号结构的SC改进算法,其帧结构如下所示:   

       Park算法,其主要通过新构造的帧结构和定时度量函数来最大程度的加大相邻点定时度量函数的差别,从而保证估计得到的定时点和其他干扰定时度量值之间的差值最大化。Park算法的帧结构如下所示: 

        Landstrom同步算法是一种不需要借助辅助数据的同步捕获算法,该算法是基于Van de Beek算法改进得到,其主要通过导频和循环前缀进行同步捕获。 

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

 

3.MATLAB核心程序

 
nloop              = [40,40,40,40,40,60,80,300];    
%turbo编码参数
N                  = 512;
M                  = 167;
%FFT
fftlen             = 512;
%每个SNR点上仿真若干次
for i=1:length(SNR_dB) 
    i
    Error   = 0;  
    err_all = 0;
    for iii=1:nloop(i)
        iii
        %产生测试信号
        msg                            = rand(Len*Nc/4,1)>=0.5;
        %turbo编码
        seridata1                      = func_turbo_code(msg,N,M);
        seridata                       = [seridata1,zeros(1,Len*Nc-length(seridata1))]';
        %QPSK映射
        [Qpsk0,Dqpsk_pilot,symbol_bit] = func_piQPSK_mod(seridata);
        %变换为矩阵   
        Qpsk_matrix                    = reshape(Qpsk0,fftlen,Nc);
        [Pilot_in,pilot_num,Pilot_seq,pilot_space] = func_insert_pilot(Dqpsk_pilot,Qpsk_matrix,pilot_type,T,TG);
        Pilot_in                       = fft(Pilot_in);
        %sub carrier mapping
        Pilot_in                       = func_subcarrierMap(Pilot_in); 
        %IFFT transform,产生OFDM信号
        ifft_out                       = ifft(Pilot_in);
        %插入包含间隔     
        Guard_int                      = ceil(BWs/fftlen);  
        Guard_int_ofdm                 = func_guard_interval_insert(ifft_out,fftlen,Guard_int);
        %将矩阵数据转换为串行进行输出
        Guard_int_ofdm_out             = reshape(Guard_int_ofdm,1,(fftlen+Guard_int)*(Nc+pilot_num));
        %短波带宽信道,加入多径干扰
        [Hm,Hmmatrix]            = func_mychannels(Radius,Scale1,Scale2,Nh,Nv);       
        [passchan_ofdm_symbol]   = func_conv_channels(Hmmatrix,Guard_int_ofdm_out,Nmultipath,Pow_avg,delay_multi,Fre_offset,timeval,iii);
        Rec_ofdm_symbol          = awgn(passchan_ofdm_symbol,SNR_dB(i),'measured');
        %开始接收
        %加载同步带来的影响数据
        load 单独各种同步算法测试\R2.mat
        ERR = mean(err1,2);
        Guard_int_remove = func_guard_interval_remove(Rec_ofdm_symbol,(fftlen+Guard_int),Guard_int,(Nc+pilot_num));
        Guard_int_remove = Guard_int_remove;
        %FFT
        fft_out          = fft(Guard_int_remove);
        %sub carrier demapping
        fft_out          = func_desubcarrierMap(fft_out);
        fft_out          = ifft(fft_out);
        %信道估计
        %lmmse
        [Sig_Lrmmse,Hs]  = func_lmmse_est(fft_out,pilot_space,Pilot_seq,pilot_num,delay_avg/timeval,4e-6/timeval,10^(SNR_dB(i)/10));
        %解调
        Dqpsk            = func_pideMapping(Sig_Lrmmse,fftlen*Nc);
        %turbo解码
        Dqpsk_decode     = [func_turbo_decode(2*Dqpsk(1:end-(Len*Nc-length(seridata1)))-1,N,M)]';
        %计算误码率
        err_num          = Len*Nc/4-length(find(msg==Dqpsk_decode(1:Len*Nc/4)));
        Error            = Error + err_num*(1+5*ERR(i+10));
    end
    %计算误码率
    err_all       = err_all+Len*Nc/4;
    Err_Rate(i)   = Error/err_all/nloop(i);
end
01_167m

4.完整MATLAB

V

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱C编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值