- improved

git-svn-id: http://moon:8086/svn/matlab/trunk@83 801c6759-fa7c-4059-a304-17956f83a07c
This commit is contained in:
2015-05-05 05:33:40 +00:00
parent 20d4827e3d
commit 71091ec4d1
+11 -10
View File
@@ -6,8 +6,10 @@ end
alpha = 0.01; alpha = 0.01;
rho = 0.999; rho = 0.999;
k_boost = 4; k_boost = 4.0;
noise_eps = 1e-3; noise_eps = 1e-3;
max_window = 3;
noise_floor_k = 0.75*k_boost;
if 1 if 1
bin_pilots = c2i(N, carrier_pilot)-1; bin_pilots = c2i(N, carrier_pilot)-1;
@@ -25,8 +27,8 @@ if 1
Zi.Xv = max(Zi.Xm, Zi.Xv); Zi.Xv = max(Zi.Xm, Zi.Xv);
Xt = abs(Zi.Xv(bin_min+1:bin_max+1)); Xt = abs(Zi.Xv(bin_min+1:bin_max+1));
xnoise = noiseFloor(Xt, k_boost/2)+noise_eps; xnoise = noiseFloor(Xt, noise_floor_k) + noise_eps;
bins = bin_min+find_bins(Xt, xnoise, k_boost, bins_search); bins = bin_min+find_bins(Xt, xnoise, k_boost, max_window);
if (~isempty(bins)) if (~isempty(bins))
k = 1; k = 1;
@@ -72,20 +74,19 @@ if 1
end end
Zf = Zi; Zf = Zi;
function bins = find_bins(x, xnoise, kboost, bins_search) function bins = find_bins(x, xnoise, kboost, max_window)
bins = []; bins = [];
xn = x - xnoise;
for n=1:length(x) for n=1:length(x)
if (xn(n) > (kboost*xnoise(n))) if (x(n) >= (kboost*xnoise(n)))
smin = max(1, n-bins_search); smin = max(1, n-max_window);
smax = min(length(xn), n+bins_search); smax = min(length(x), n+max_window);
[v, nn] = max(xn(smin:smax)); [v, nn] = max(x(smin:smax));
winner = nn + smin-2; winner = nn + smin-2;
if isempty(find(bins == winner)) if isempty(find(bins == winner))
bins = [bins winner]; bins = [bins winner];
end end
n = min(length(xn), n + bins_search); n = min(length(x), n + max_window);
end end
end end
bins = bins'; bins = bins';