- renamed variables

git-svn-id: http://moon:8086/svn/matlab/trunk@54 801c6759-fa7c-4059-a304-17956f83a07c
This commit is contained in:
2015-05-02 09:43:13 +00:00
parent 1992026489
commit 97f5e83720
+40 -42
View File
@@ -54,69 +54,64 @@ x = awgn(x, SNR, 'measured');
K = fix((length(x))/(N+Ng))-1;
% Timing coarse
fprintf('Coarse timing acquisition\n');
cp_off = 0;
cp_off_ = [];
if 1
fprintf('Coarse timing estimation\n');
Z = 0;
for k=1:20
xp = x((k-1)*(N+Ng)+1:k*(N+Ng));
[cp_off, Nd, valid, Z] = timing_coarse(xp, N, Ng, Ng, Z);
if (valid)
cp_off_ = [cp_off_ cp_off];
end
end;
cp_off = round(median(cp_off_))
Nd = Nd
end
Z = 0;
for k=1:20
xp = x((k-1)*(N+Ng)+1:k*(N+Ng));
[cp_off, Nd, valid, Z] = timing_coarse(xp, N, Ng, Ng, Z);
if (valid)
cp_off_ = [cp_off_ cp_off];
end
end;
cp_off = round(median(cp_off_))
Nd = Nd
% Integer CFO coarse
fprintf('Coarse integer CFO acquisition\n');
fdet_coarse_Z = 0;
Z_cfa_pre = 0;
df_i_ = [];
df_acq_coarse_int_ = [];
valid_latency_count = 20;
if 1
fprintf('Coarse integer CFO estimation\n');
% Integer CFO coarse
for k=1:200
xp = x((k-1)*(N+Ng)+cp_off+1:k*(N+Ng)+cp_off);
[d_bin, valid, fdet_coarse_Z] = cfo_coarse_int(xp(Ng+1:N+Ng), N, carrier_pilot, 11, fdet_coarse_Z);
if valid
df_i = -d_bin(1)/N*fs;
df_acq_coarse_int = -d_bin(1)/N*fs;
if valid_latency_count > 0
valid_latency_count = valid_latency_count - 1;
else
break;
end
end
end;
end
fprintf('Coarse fractional CFO estimation\n');
fprintf('Coarse fractional CFO acquisition\n');
% CFO coarse
df_f_ = [];
df_acq_coarse_fract_ = [];
for k=1:200
xp = x((k-1)*(N+Ng)+cp_off+1:k*(N+Ng)+cp_off);
[domega_f, Z_cfa_pre] = cfo_coarse_fract(xp, N, Ng, Ng, Nd, Z_cfa_pre);
df_f_ = [df_f_ domega_f*fs];
df_acq_coarse_fract_ = [df_acq_coarse_fract_ domega_f*fs];
end;
df_coarse = df_i + mean(df_f_(10:200))
df_coarse_ = df_i + df_f_;
df_acq_c = df_acq_coarse_int + mean(df_acq_coarse_fract_(10:200))
df_acq_c_ = df_acq_coarse_int + df_acq_coarse_fract_;
if pre_mix
x1 = x.*exp(j*(2*pi*df_coarse/fs.*(0:length(x)-1)'));
df_track = 0;
x1 = x.*exp(j*(2*pi*df_acq_c/fs.*(0:length(x)-1)'));
df_acq_fine = 0;
else
x1 = x;
df_track = df_coarse;
df_acq_fine = df_acq_c;
end
% CFO Fine
fprintf('Fine CFO estimation\n');
fprintf('Receive Symbols\n');
fprintf('Fine fractional CFO acquisition\n');
Xlast = [];
df_fine = 0;
df_fine_ = [];
df_track_ = [];
df_acq_fine_err = 0;
df_acq_fine_err_ = [];
df_acq_fine_ = [];
kn = fs/(2*pi*(1+Ng/N))/N;
x_ = [];
Hp_ = [];
@@ -128,19 +123,19 @@ sym_pilot = exp(j*2*pi*phi_pilot'/1024);
bin_pilot = c2i(N, carrier_pilot);
for k=1:K,
xp = x1((k-1)*(N+Ng)+cp_off+1:k*(N+Ng)+cp_off);
xp = xp.*exp(j*(2*pi*df_track/fs*(0:N+Ng-1)' + phi));
phi = phi + 2*pi*df_track/fs*(N+Ng);
xp = xp.*exp(j*(2*pi*df_acq_fine/fs*(0:N+Ng-1)' + phi));
phi = phi + 2*pi*df_acq_fine/fs*(N+Ng);
xp = xp(Ng+1:N+Ng);
x_ = [x_' xp']';
X = fft(xp);
if (~isempty(Xlast))
Z = Xlast .* conj(X);
df_fine = kn*angle(Z(bin_pilot));
df_fine_ = [df_fine_ df_fine];
df_acq_fine_err = kn*angle(Z(bin_pilot));
df_acq_fine_err_ = [df_acq_fine_err_ df_acq_fine_err];
phi_p = angle(X(bin_pilot));
mag_p = abs(X(bin_pilot));
df_track = df_track + 0.1*mean(df_fine(bin_track));
df_track_ = [df_track_ df_track];
df_acq_fine = df_acq_fine + 0.1*mean(df_acq_fine_err(bin_track));
df_acq_fine_ = [df_acq_fine_ df_acq_fine];
Hp = X(bin_pilot)./conj(sym_pilot);
Hp_ = [Hp_ Hp];
Z_ = [Z_ X];
@@ -153,17 +148,17 @@ if ~isempty(cp_off_)
plot(0:length(cp_off_)-1, cp_off_, 0:length(cp_off_)-1, cp_off*ones(size(cp_off_)), 'r-'); grid; title('cp_{off}')
end
df_track_ = df_track_';
df_acq_fine_ = df_acq_fine_';
figure;
subplot(3, 1, 1)
plot(0:length(df_coarse_)-1, df_coarse_); grid; title('df_{coarse}')
plot(0:length(df_acq_c_)-1, df_acq_c_); grid; title('df_{coarse} (Acquisition)')
subplot(3, 1, 2)
plot(0:length(df_track_)-1, df_track_); grid; title('df_{track}')
plot(0:length(df_acq_fine_)-1, df_acq_fine_); grid; title('df_{fine} (Acquisition)')
subplot(3, 1, 3)
plot(0:length(df_fine_)-1, df_fine_); grid; title('df_{fine}')
plot(0:length(df_acq_fine_err_)-1, df_acq_fine_err_); grid; title('Error(df_{fine}) (Acquisition)')
figure;
Z_pilot = Z_(bin_pilot, 200:length(Z_))';
@@ -175,6 +170,7 @@ else
axis([-maxZ maxZ -maxZ maxZ]);
end
fprintf('Frame timing acquisition\n');
%% Detect start of DRM frame
bins = c2i(N, carrier_time);
kc_max = -1000;
@@ -207,6 +203,8 @@ else
axis([-maxZ maxZ -maxZ maxZ]);
end
fprintf('Channel estimation and symbol reception\n');
[W_syms, W_pilots] = calcWiener(drm_mode, drm_bw);
figure;