[calcWiener]
- calc W_pilots [RX] - added delta_freq for tracking (Zwischenstand) git-svn-id: http://moon:8086/svn/matlab/trunk@52 801c6759-fa7c-4059-a304-17956f83a07c
This commit is contained in:
+20
-12
@@ -207,7 +207,7 @@ else
|
||||
axis([-maxZ maxZ -maxZ maxZ]);
|
||||
end
|
||||
|
||||
W = calcWiener(drm_mode, drm_bw);
|
||||
[W_syms, W_pilots] = calcWiener(drm_mode, drm_bw);
|
||||
|
||||
figure;
|
||||
% Detect scattered gain pilots
|
||||
@@ -239,37 +239,45 @@ fac_cell_list = ...
|
||||
};
|
||||
symbol_counter = 0;
|
||||
win_count = 0;
|
||||
H = [];
|
||||
sym_H = [];
|
||||
H_syms = [];
|
||||
H_pilots = [];
|
||||
sym_out = [];
|
||||
kk = 1;
|
||||
H_ = [];
|
||||
for k=start:length(Z_)
|
||||
|
||||
%shifted symbol index
|
||||
nn = rem(k-1-symbols_to_delay + symbols_per_frame, symbols_per_frame);
|
||||
n = rem(nn, ofdm_drm_params.y);
|
||||
nn = rem(k-start-1-symbols_to_delay + symbols_per_frame, symbols_per_frame);
|
||||
m = floor(nn/ofdm_drm_params.y);
|
||||
n = rem(nn, ofdm_drm_params.y);
|
||||
|
||||
[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);
|
||||
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)).');
|
||||
|
||||
if ~isempty(H_pilots)
|
||||
delta_freq_offset = fs/(2*pi*N)*angle( H_pilots * conj(H2_))
|
||||
end
|
||||
H2_ = H_;
|
||||
H_= Z_(carrier_gain_bins, k)./(mag_gain.*exp(j*2*pi*phi_gain/1024)).';
|
||||
H_raw(carrier_gain_bins) = H_;
|
||||
H_gain_cell{win_count+1} = transpose(H_);
|
||||
ii = 1+mod(n+(0:frames_per_window-1), frames_per_window);
|
||||
H_gain = [H_gain_cell{ii}];
|
||||
H_gain_carriers_cell{win_count+1} = carrier_gain;
|
||||
|
||||
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};
|
||||
H_syms = H_gain*W_syms{n+1};
|
||||
H_pilots = H_gain*W_pilots{n+1};
|
||||
ZZ = Z_(carrier_indexes, k-symbols_to_delay).';
|
||||
sym_eq = ZZ ./ H;
|
||||
sym_eq = ZZ ./ H_syms;
|
||||
sym_out(:, kk) = sym_eq;
|
||||
if show_H
|
||||
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);
|
||||
plot(carriers, abs(H_raw(carrier_indexes)), 'b-', carriers, abs(H_syms), 'r-'); grid; title('abs(H_{syms})'); axis([ofdm_spec_occ.kmin ofdm_spec_occ.kmax 0 15+0*max(abs(H_syms))]); title(str);
|
||||
subplot(3, 1, 2)
|
||||
plot(carriers, angle(H_raw(carrier_indexes)), 'b-', carriers, angle(H), 'r-'); grid; title('phi(H)'); axis([ofdm_spec_occ.kmin ofdm_spec_occ.kmax -4 4]); title(str);
|
||||
plot(carriers, angle(H_raw(carrier_indexes)), 'b-', carriers, angle(H_syms), 'r-'); grid; title('phi(H_{syms})'); axis([ofdm_spec_occ.kmin ofdm_spec_occ.kmax -4 4]); title(str);
|
||||
subplot(3, 1, 3)
|
||||
plot(carriers, abs(sym_eq), 'b-'); grid; title('abs(Sym_{Eq})'); axis([ofdm_spec_occ.kmin ofdm_spec_occ.kmax 0 2]); title(str);
|
||||
hold on;
|
||||
|
||||
Reference in New Issue
Block a user