📄 coarse_freq_offset_compensate.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 + -