From 3fc175c5997d61184934b1ac4b1c7b9d4c26577a Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sat, 2 May 2015 18:05:57 +0000 Subject: [PATCH] - cleaned up git-svn-id: http://moon:8086/svn/matlab/trunk@59 801c6759-fa7c-4059-a304-17956f83a07c --- ofdm/ofdm_rx.m | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/ofdm/ofdm_rx.m b/ofdm/ofdm_rx.m index 3f2ae86..e93d745 100644 --- a/ofdm/ofdm_rx.m +++ b/ofdm/ofdm_rx.m @@ -225,7 +225,6 @@ symbols_per_frame = ofdm_drm_params.nspf; symbols_to_delay = ofdm_drm_params.y; frames_per_window = 2*ofdm_drm_params.y; H_gain_cell = cell (frames_per_window, 1); -H_gain_carriers_cell = cell (frames_per_window, 1); H_raw = zeros(length(ofdm_spec_occ.kmin:ofdm_spec_occ.kmax),1); carriers = ofdm_spec_occ.kmin:ofdm_spec_occ.kmax; carrier_indexes = c2i(N, carriers); @@ -269,17 +268,24 @@ for k=start:length(Z_) H_raw(carrier_gain_bins) = (H_); H_gain_cell{m+1} = (H_); - H_gain_carriers_cell{m+1} = carrier_gain; str = sprintf('Frame %d, s=%d, m=%d, n=%d', k, s, m, n); if kk > 6 ii = 1+mod(m+symbols_to_delay-1+(0:frames_per_window-1), frames_per_window); + H_gain = [H_gain_cell{ii}]; H_syms = H_gain*W_syms{n+1}; H_pilots = (H_gain)*W_pilots{n+1}; - ZZ = Z_(carrier_indexes, k-symbols_to_delay).'; - hhh = H_gain_cell{mod(m-1, frames_per_window)+1}; - df_track = 12000/(2*pi*N)*angle( (H_pilots) * hhh' + MIN_ABS_H); + + % Get the correctly delayed symbols + sym = Z_(carrier_indexes, k-symbols_to_delay).'; + + % Get the correctly delayed raw channel estimate + Hr = H_gain_cell{mod(m-1, frames_per_window)+1}; + + % get frequency error + % correlate wiener filtered channel with raw estimate + df_track = 12000/(2*pi*N)*angle(H_pilots * Hr' + MIN_ABS_H); df_track_ = [df_track_ df_track]; % check for too small values @@ -288,13 +294,14 @@ for k=start:length(Z_) H_too_small_index = find( abs(H_syms)