OFDM之STO
对于时偏进行定位,只要落在CP范围以内就行,通过简单的LS信道估计+线性插值就可以将定位不准的问题解决;不需要额外的处理
clc;clear;close all
load('A.mat')
M = 64;
k = log2(M);
FFT_size = 1024;
STO1 = 10;
IFO = 5;
FFO = 0;
t2 = (0:1023).';
phase = exp(-1i*2*pi*STO1/1024*t2);
t3 = (88:1111).';
%% 发送端
data = randi([0 1],FFT_size*k,1);
txSig = qammod(data,M,'InputType','bit','UnitAveragePower',true);
ifft_tx = ifft(txSig,FFT_size);
CP_data = [ifft_tx(end-88+1:end);ifft_tx;zeros(30,1)];
%% 信道
%
% t1 = (0:length(CP_data)-1).';
% rx_data = CP_data.*exp(-1i*2*pi*(IFO+FFO)/1024*t1);
rx_data = CP_data;
%% 接收端
decp_data = rx_data(89-STO1:end-STO1-30);
fft_data = fft(decp_data,1024);
H_est = fft_data(1:2:end)./txSig(1:2:end);
H = interp1(1:2:1024,H_est,(1:1024).','linear','extrap');
phase_data = fft_data./H;
rxSig = qamdemod(phase_data,M,'OutputType','bit','UnitAveragePower',true);
[num,err] = biterr(data,rxSig)
%% 画图.
figure(1)
scatterplot(phase_data)
%% STO估计不准,就会引入连续相位误差,非共相位误差