⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 coarse_freq_offset_compensate.m

📁 一个在matlab环境下的DAB仿真程序源码。内含ofdm收发
💻 M
字号:
function [fft_frame_correct_temp,phase_fft_data,phase_symbol_correct,symbol_correct_L, ml_time_temp]=coarse_freq_offset_compensate(frame_num,symnum,N,L,k,ml_time,ml_freq,multi_path)
% N=2048;L=128;
M=round(length(multi_path)/(N+L));
len=length(multi_path);

freq_correct_reg=[];
fft_frame_correct=[];
phase_symbol_correct=[];
path=[multi_path zeros(1,N+L)];     % 下一帧的数据
len=length(multi_path);
symbol_time_temp=[];
symbol_correct_L=[];


 for i=1:M ;            %一帧的符号数
    symbol_time_temp(i)=ml_time(1,i)-(i-1)*(N+L);            %找到OFDM的符号头 
    
    if symbol_time_temp(i)>L+1;
        ml_time_temp(i)=symbol_time_temp(i)-L;
    elseif symbol_time_temp(i)==L+1;
        ml_time_temp(i)=L+1;
    else
        ml_time_temp(i)=symbol_time_temp(i);
    end;
    freq_correct_reg_temp=exp(-j*2*pi*(ml_freq)*((i-1)*(N+L)+k*(N+L)*symnum:i*(N+L)+k*(N+L)*symnum-1)/N);  %一帧每个符号要补偿的相位 VCO 
    freq_correct_reg=[ freq_correct_reg freq_correct_reg_temp ];
    frame_correct_temp(i,:)=path(ml_time_temp(i)+(i-1)*(N+L):ml_time_temp(i)+(i-1)*(N+L)+N-1).*freq_correct_reg_temp(L+1:N+L);
    fft_frame_correct_temp(i,:)=(1/sqrt(N))*fft(frame_correct_temp(i,:));
   % symbol_correct_L=[symbol_correct_L frame_correct_temp(i,:)];
   % fft_frame_correct=[fft_frame_correct fft_frame_correct_temp];
   
  
end;

%   ml_time_mean=round(mean(symbol_time_temp))-L;            % m个OFDM符号定时求平均 整数倍的定时偏移。(预留小数倍的定时偏移,作为采样钟相位偏移用)

 



    
    

phase_symbol_correct=frame_correct_temp(1,:);  % 相位参考符号的时域补偿     

symbol_correct_L=path(1:(symnum)*(N+L)).*freq_correct_reg;  %一帧数据的时域补偿  




%[time(i),freq(i)]=ML(path_correct(i,:),0,L,N);


phase_fft_data=fft_frame_correct_temp(1,:);          % fft change  
%fft_data=(1/sqrt(N))*fft(phase_symbol_correct);






% for i=1:2
%     time_start(i)=i*L-(ml_time(i)-1-L-(i-1)*N)+(i-1)*N;
% 
% % channel_base_128g_201_freq_correct_reg(i,:)=path_correct((i-1)*(L)+ml_time(i):i*(N+L));
% 
% channel_base_128g_201_freq_correct_reg(i,:)=path_correct(time_start(i)+1:time_start(i)+N);
% fft_data(i,:)=1/sqrt(N)*fft(channel_base_128g_201_freq_correct_reg(i,:));
% 
% end;
% 



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -