您现在的位置:首页 >> 通信 >> 内容

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

时间:2022/12/18 19:50:21 点击:

  核心提示: 01_167m操作录像+word论文...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y5qWmpZu

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览




3.算法概述

       在现代短波通信系统中,其信道一般具有频率多样性和频率选择性,因此在短波通信过程中,多径的传播将产生信号的符号干扰和衰落。和传统的频分复用相比,OFDM通信技术可以最大限度的增加频谱利用率,同时OFDM将高速传输数据进行串并转换,从而增加子载波的符号周期,最终将频率选择性衰落的信道转换为平衰落信道。因此,OFDM技术具有优良的抗多径能力,较高的频谱利用率,在短波通信中有着十分重要的应用。由于OFDM系统对多普勒频偏和定时有着较为严格的要求,因此,载波同步和符号同步是OFDM系统中的一个重要模块。同步过程分为同步捕获阶段和同步跟踪节点,目前较为常见的同步捕获算法主要包括T.Schmidl&D.Cox算法,Minn算法,Park算法以及Landstrom算法。 

4.部分源码

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

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168