- 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:
+12
-14
@@ -210,19 +210,14 @@ W = calcWiener(drm_mode, drm_bw);
|
|||||||
|
|
||||||
figure;
|
figure;
|
||||||
% Detect scattered gain pilots
|
% 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_per_frame = ofdm_drm_params.nspf;
|
||||||
symbols_to_delay = ofdm_drm_params.y;
|
symbols_to_delay = ofdm_drm_params.y;
|
||||||
frames_per_window = 2*ofdm_drm_params.y;
|
frames_per_window = 2*ofdm_drm_params.y;
|
||||||
H_gain_cell = cell (frames_per_window, 1);
|
H_gain_cell = cell (frames_per_window, 1);
|
||||||
H_gain_carriers_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);
|
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 = ...
|
fac_cell_list = ...
|
||||||
{
|
{
|
||||||
[],
|
[],
|
||||||
@@ -241,8 +236,12 @@ fac_cell_list = ...
|
|||||||
[23, 35, 47, 65, 77],
|
[23, 35, 47, 65, 77],
|
||||||
[]
|
[]
|
||||||
};
|
};
|
||||||
carriers = ofdm_spec_occ.kmin:ofdm_spec_occ.kmax;
|
symbol_counter = 0;
|
||||||
carrier_indexes = c2i(N, carriers);
|
win_count = 0;
|
||||||
|
H = [];
|
||||||
|
sym_H = [];
|
||||||
|
sym_out = [];
|
||||||
|
kk = 1;
|
||||||
for k=start:length(Z_)
|
for k=start:length(Z_)
|
||||||
|
|
||||||
%shifted symbol index
|
%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, phi_gain, mag_gain] = getRefGain(ofdm_drm_params, ofdm_spec_occ, symbol_counter);
|
||||||
carrier_gain_bins = c2i(N, carrier_gain);
|
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) = Z_(carrier_gain_bins, k)./(mag_gain.*exp(j*2*pi*phi_gain/1024)).';
|
||||||
H_raw(carrier_gain_bins) = Hp;
|
|
||||||
H_gain_cell{win_count+1} = transpose(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);
|
ii = 1+mod(n+(0:frames_per_window-1), frames_per_window);
|
||||||
H_gain = [H_gain_cell{ii}];
|
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);
|
str = sprintf('Frame %d, SymCount %d, winCount %d, n=%d', k, symbol_counter, win_count, n);
|
||||||
if length(H_gain) == 208
|
if length(H_gain) == 208
|
||||||
H = H_gain*W{n+1};
|
H = H_gain*W{n+1};
|
||||||
ZZ = Z_(carrier_indexes, k).';
|
ZZ = Z_(carrier_indexes, k-symbols_to_delay).';
|
||||||
sym_eq = ZZ ./ H;
|
sym_eq = ZZ ./ H;
|
||||||
sym_out(:, kk) = sym_eq;
|
sym_out(:, kk) = sym_eq;
|
||||||
if 1
|
if 0
|
||||||
H_raw(1:2:N) = H_raw(2:2:N);
|
H_raw(1:2:N) = H_raw(2:2:N);
|
||||||
subplot(3, 1, 1)
|
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);
|
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);
|
pause(0.01);
|
||||||
else
|
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))
|
if (~isempty(fac_c))
|
||||||
fac_i = fac_c - ofdm_spec_occ.kmin + 1;
|
fac_i = fac_c - ofdm_spec_occ.kmin + 1;
|
||||||
hold on;
|
hold on;
|
||||||
|
|||||||
Reference in New Issue
Block a user