1·首先从公式的角度来理解小数倍频偏对OFDM信号的影响
是接收的时域的OFDM信号,
是接收的频域的OFDM信号,
是归一化小数倍频偏。通过对公式展开,可以发现小数倍频偏对原始信号造成的影响包括幅度、相位以及相邻子载波之间的干扰。
MATLAB在频域实现小数倍频偏补偿
clc
clear
Nfft=8; %FFT的大小
CFO=0.1;%归一化频偏大小
h= modem.pskmod('M', 2);
h2= modem.pskdemod('M', 2);
msg=randi([0 1],1,Nfft);
modmsg=modulate(h,msg); %BPSK调制
x_ifft=ifft(modmsg,Nfft); %频域变时域
y_CFO=add_CFO(x_ifft,CFO,Nfft);%加入频偏
y_fft=fft(y_CFO);
alp=sin(pi*CFO_est)*exp(1i*pi*CFO_est*(Nfft-1)/Nfft)/(Nfft*sin(pi*CFO_est/Nfft)); &幅度以及相位的影响
a=exp(1i*pi*CFO_est*(Nfft-1)/Nfft);
for k=1:Nfft;
sum=0;
for m=1:Nfft;
if m==k
sum=sum+0;
else
sum=sum+(sin(pi*(m-k+CFO_est))/(Nfft*sin(pi*(m-k+CFO_est)/Nfft)))*modmsg(m)*exp(1i*pi*(m-k)*(Nfft-1)/Nfft);
end
end
I(k)=a.*sum; %计算I(k),子载波之间干扰
end
x_compe=((y_fft-I)./alp)' %补偿之后的信号
xdemod=demodulate(h2,x_compe);
%实现对OFDM加入频偏
function y_CFO=add_CFO(y,CFO,Nfft)
nn=0:length(y)-1;
y_CFO=y.*exp(1i*2*pi*CFO*nn/Nfft);