UWB系统同步:基于训练序列的OFDM同步算法Matlab仿真

1.软件版本

MATLAB2021a



2.核心代码

登录后复制

clc; clear;close all;%% 仿真参数    FFTLen = 128;   % FFT块点数    GILen = 32;     
% 保护间隔点数    CPLen = 5;      % 循环前缀点数    TotalLen = FFTLen + GILen + CPLen;    
OFDMSymbolNum = 3;          % 每帧OFDM符号数    DataCarryPerSymbol = 100;   
% 每符号有效数据数据数    BitPerDataCarry = 2;        
% QPSK    BitLenPerOFDMFrame = BitPerDataCarry*DataCarryPerSymbol*OFDMSymbolNum;    
TotalLenPerOFDMFrame = BitPerDataCarry*FFTLen*OFDMSymbolNum;    BeaconLen = 32;    Fs = 8;             
% 采样点数    Rolloff = 0.5;      % 滚降系数    FreqOffSet = 0.2;   % 频偏    DLenSymbol = 1;     
% 延迟    freqest = 1;        % 频偏补偿开关    SNR = 9;    %% 发射机    %% 产生PN9序列    
OFDMPN9 = [1 0 0 0 1 0 0 1 1];    OFDMPN9Reg=zeros(1,511);    for ii = 1:511        
OFDMPN9Reg(ii) = OFDMPN9(9);        OFDMPN9 = [ xor(OFDMPN9(9),OFDMPN9(5)),OFDMPN9(1:8)];    
end    %% 生成发射序列    PN9RepNum = ceil(TotalLenPerOFDMFrame/511);    
OFDMPN9Tx = repmat(OFDMPN9Reg,1,PN9RepNum);    OFDMPN9Tx = OFDMPN9Tx(1:TotalLenPerOFDMFrame);  
% 使用PN9序列%     OFDMPN9Tx = randint(1:TotalLenPerOFDMFrame);    
% 使用随机序列    %% QPSK 调制    table=exp(i*[-3/4*pi 3/4*pi 1/4*pi -1/4*pi])   
% 生成QPSK符号    table=table([0 1 3 2]+1)                       
% Gray映射    inp=reshape(OFDMPN9Tx,2,TotalLenPerOFDMFrame/2);    Data2iFFT=table([2 1]*inp+1);                
%% IFFT    Data2iFFT = reshape(Data2iFFT,FFTLen,OFDMSymbolNum);    DataofiFFT= ifft(Data2iFFT,[],1);    
DataofiFFTML = DataofiFFT;    %% 加Preamble、循环前缀、保护间隔    
OFDMSymbol = [DataofiFFT(FFTLen-CPLen+1:FFTLen,:);DataofiFFT(:,:);zeros(GILen,OFDMSymbolNum)];    
Beacon = BeaconGen(BeaconLen);    SigPow = mean(abs(OFDMSymbol(:)).^2);    
Beacon = sqrt(2*SigPow)*Beacon;    Preamble = [Beacon.'; Beacon.'];    
ReOrder = [Preamble; OFDMSymbol(:)];    Data2OFDMTxFIRFilter = [ReOrder(:)];    
%% 上采样及成形滤波    TxSignal = rcosflt(Data2OFDMTxFIRFilter,1,Fs,'sqrt',Rolloff,DLenSymbol);    
Txjw = j*(2*FreqOffSet*pi/(FFTLen*Fs))*(0:length(TxSignal)-1);  % 生成发送载波    
TxSignal = TxSignal.'.*exp(Txjw);                               % 加频偏%% 信道    
RxSignal = awgn(TxSignal,SNR,'measured');%% 接收机    %% 匹配滤波及下采样    
RXSigMatched = rcosflt(RxSignal,1,Fs,'sqrt/Fs',Rolloff,DLenSymbol);    
Rx_Sig_down = RXSigMatched(1:Fs:end);    Rx_Sig = Rx_Sig_down((2*DLenSymbol+1):(end-2*DLenSymbol));        
%% 帧头捕获、同步模块    autoresult = AutoR(Rx_Sig.',BeaconLen);  
% 滑动自相关窗    length(Rx_Sig)    automodule = abs(autoresult).^2;         
% 自相关模值    [a,time_est] = max(automodule);          
% 帧头位置    time_est_err = time_est - (BeaconLen+1);  
% 帧头位置误差    freq_est = atan(imag(autoresult(time_est))/real(autoresult(time_est)))*(FFTLen/BeaconLen)/
(2*pi); % 频偏估计    freq_est_err = abs(freq_est+FreqOffSet)    figure    plot(automodule) %  画自相关结果    
xlabel('n')    ylabel('自相关模值')    grid on    Rxjw = j*(2*freq_est*pi/(FFTLen))*(0:length(Rx_Sig)-1);  
% 频偏补偿    if freqest        Rx_Sig = Rx_Sig.*exp(Rxjw).';    end  
.1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.
39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.
74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.94.95.96.



3.操作步骤与仿真结论

【UWB系统同步】OFDM基于训练序列的同步算法的MATLAB仿真_OFDM

【UWB系统同步】OFDM基于训练序列的同步算法的MATLAB仿真_数据_02


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空