diff --git a/ofdm/ofdm_rx.m b/ofdm/ofdm_rx.m index e1b7af3..7231180 100644 --- a/ofdm/ofdm_rx.m +++ b/ofdm/ofdm_rx.m @@ -210,19 +210,14 @@ W = calcWiener(drm_mode, drm_bw); figure; % Detect scattered gain pilots -symbol_counter = 0; -win_count = 0; -H = []; -sym_H = []; -sym_out = []; -kk = 1; - 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); fac_cell_list = ... { [], @@ -241,8 +236,12 @@ fac_cell_list = ... [23, 35, 47, 65, 77], [] }; -carriers = ofdm_spec_occ.kmin:ofdm_spec_occ.kmax; -carrier_indexes = c2i(N, carriers); +symbol_counter = 0; +win_count = 0; +H = []; +sym_H = []; +sym_out = []; +kk = 1; for k=start:length(Z_) %shifted symbol index @@ -252,8 +251,7 @@ for k=start:length(Z_) [carrier_gain, phi_gain, mag_gain] = getRefGain(ofdm_drm_params, ofdm_spec_occ, symbol_counter); carrier_gain_bins = c2i(N, carrier_gain); - Hp = Z_(carrier_gain_bins, k)./(mag_gain.*exp(j*2*pi*phi_gain/1024)).'; - H_raw(carrier_gain_bins) = Hp; + H_raw(carrier_gain_bins) = Z_(carrier_gain_bins, k)./(mag_gain.*exp(j*2*pi*phi_gain/1024)).'; H_gain_cell{win_count+1} = transpose(Z_(carrier_gain_bins, k)./(mag_gain.*exp(j*2*pi*phi_gain/1024)).'); ii = 1+mod(n+(0:frames_per_window-1), frames_per_window); H_gain = [H_gain_cell{ii}]; @@ -262,10 +260,10 @@ for k=start:length(Z_) str = sprintf('Frame %d, SymCount %d, winCount %d, n=%d', k, symbol_counter, win_count, n); if length(H_gain) == 208 H = H_gain*W{n+1}; - ZZ = Z_(carrier_indexes, k).'; + ZZ = Z_(carrier_indexes, k-symbols_to_delay).'; sym_eq = ZZ ./ H; sym_out(:, kk) = sym_eq; - if 1 + if 0 H_raw(1:2:N) = H_raw(2:2:N); subplot(3, 1, 1) plot(carriers, abs(H_raw(carrier_indexes)), 'b-', carriers, abs(H), 'r-'); grid; title('abs(H)'); axis([ofdm_spec_occ.kmin ofdm_spec_occ.kmax 0 15+0*max(abs(H))]); title(str); @@ -283,7 +281,7 @@ for k=start:length(Z_) pause(0.01); else - fac_c = fac_cell_list{symbol_counter+1}; + fac_c = fac_cell_list{mod(symbol_counter-symbols_to_delay, symbols_per_frame)+1}; if (~isempty(fac_c)) fac_i = fac_c - ofdm_spec_occ.kmin + 1; hold on;