Digital Signal Processing Reference
In-Depth Information
chan.StoreHistory = 1; % To plot the time varying channel
% Frequency selective multi-path fading channel
% Passing the signal through a multipath Rayleigh fading channel
% and adding other channel impurities
Received_Signal = filter(chan, ofdm_mod_out);
% Plot(chan)
Received_Signal = Received_Signal .*
exp(j*2*pi*(theta/N)*(0:length(Received_Signal)-1));
Received_Signal = awgn(Received_Signal, SNR, ' measured ' );
Received_Signal = [zeros(1,timing_offset) Received_Signal];
The coarse timing estimation is based on correlation of the training signal that consists of L parts
of M size sequence. The algorithm computes the peak of the timingmatrix given by the following set
of equations:
0
@
1
A
2
u e ðÞ¼ L
L 1 PðÞ
j
j
EðÞ
L 2
M 1
PðÞ¼
0 bðÞ
0 r * d þkMþm
ð
Þ rðd þ k þ 1
ð
ÞMþmÞ
M 1
L 1
2
EðÞ¼
0 rdþ i þkM
ð
Þj
:
0
The MATLAB code here implements these equations.
% RECEIVER
% Timing and frequency estimation
for k = 1:L-1
b(k) = Sign_Pattern(k)*Sign_Pattern(k+1);
end
% Timing estimation
for d=1:N
E(d)= sum(abs(Received_Signal(d:d+L*M-1)).^2);
P(d) = 0;
for k=0:L-2
index = d+k*M;
indexP1 = d+(k+1)*M;
P(d) = P(d) + (b(k+1) * Received_Signal(indexP1:
indexP1+M-1)*Received_Signal(index:index+M-1) ' );
end
Timing_Metric(d) = ((L/(L-1))*abs(P(d))/E(d))^2;
end
[x y] = max(Timing_Metric);
Coarse_Timing_Point = round(y);
d_max = Coarse_Timing_Point;
Search WWH ::




Custom Search