[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:
2015-05-02 08:55:06 +00:00
parent 82695cae43
commit 42cf28baf6
2 changed files with 46 additions and 20 deletions
+20 -12
View File
@@ -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;