- corrected delay H and Z

git-svn-id: http://moon:8086/svn/matlab/trunk@50 801c6759-fa7c-4059-a304-17956f83a07c
This commit is contained in:
2015-05-01 13:17:20 +00:00
parent 6d1e19cdc5
commit de0bc4a299
+12 -14
View File
@@ -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;