- fixed jitter in H estimation

- consider power boost in params
- RX: cleaned up
- TX: cleaned up


git-svn-id: http://moon:8086/svn/matlab/trunk@44 801c6759-fa7c-4059-a304-17956f83a07c
This commit is contained in:
2015-04-30 06:21:22 +00:00
parent 584d16e3bf
commit c5c6c37848
5 changed files with 106 additions and 114 deletions
+12 -22
View File
@@ -148,15 +148,6 @@ for k=1:K,
Xlast = X;
end
df_track = mean(df_track_(10:200))
mean_df_fine = mean(df_fine_, 2)
mu_Hp = mean(abs(Hp_'))'
sigma_Hp = var(abs(Hp_'))'
SNR_Hp = -10*log10(sigma_Hp)'
G = (conj(Hp)*1)./(abs(Hp).^2 * 1 + sigma_Hp)
Hp_1 = 1./Hp
if ~isempty(cp_off_)
figure;
plot(0:length(cp_off_)-1, cp_off_, 0:length(cp_off_)-1, cp_off*ones(size(cp_off_)), 'r-'); grid; title('cp_{off}')
@@ -220,20 +211,16 @@ W = calcWiener(drm_mode, drm_bw);
figure;
% Detect scattered gain pilots
sym_count = 0;
start = skip_syms+frame_start
symbol_counter = 0;
win_count = 0;
start = skip_syms+frame_start;
H = zeros(N, 1);
H = [];
sym_H = [];
sym_out = [];
kk = 1;
G = [];
bin = c2i(N, 13);
Hraw = [];
symbols_per_frame = 15;
symbols_per_frame = ofdm_drm_params.nspf;
symbols_to_delay = ofdm_drm_params.y;
symbol_counter = 0;
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);
@@ -244,14 +231,16 @@ for k=start:length(Z_)
n = rem(nn, ofdm_drm_params.y);
m = floor(nn/ofdm_drm_params.y);
[carrier_gain, phi_gain, mag_gain] = getRefGain(ofdm_drm_params, ofdm_spec_occ, symbol_counter); symbol_counter = symbol_counter + 1;
[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_gain_cell{win_count+1} = transpose(Z_(carrier_gain_bins, k)./(mag_gain.*exp(j*2*pi*phi_gain/1024)).');
ii = 1+mod(0+win_count+(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_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
if 1
H = H_gain*W{n+1};
@@ -259,16 +248,16 @@ for k=start:length(Z_)
sym_out(:, kk) = ZZ ./ H;
if 1
subplot(2, 1, 1)
plot(0:length(H)-1, abs(H)); grid; title('abs(H)'); axis([0 length(H)-1 0 15+0*max(abs(H))]);
plot(0:length(H)-1, abs(H)); grid; title('abs(H)'); axis([0 length(H)-1 0 15+0*max(abs(H))]); title(str);
subplot(2, 1, 2)
plot(0:length(H)-1, angle(H)); grid; title('phi(H)'); axis([0 length(H)-1 -4 4]);
plot(0:length(H)-1, angle(H)); grid; title('phi(H)'); axis([0 length(H)-1 -4 4]); title(str);
else
hold on;
plot(sym_out(:, kk), '+');
hold off;
grid; title('Sym');
end
pause(0.01);
pause(0.025);
else
ii = [H_gain_carriers_cell{1:6}]
H = H_gain;
@@ -282,6 +271,7 @@ for k=start:length(Z_)
end
kk = kk + 1;
win_count = mod(win_count+1, frames_per_window);
symbol_counter = symbol_counter + 1;
end