- improved

git-svn-id: http://moon:8086/svn/software/trunk/projects/GnuRadio@433 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2019-05-21 07:00:56 +00:00
parent 4a3bf9eea3
commit 7cfba591a9
+16 -12
View File
@@ -28,29 +28,32 @@ function retval = peak_detect ()
N = 1024 N = 1024
Nh = N/2; Nh = N/2;
kn = 0.1 kn = 0.1
ks = 0.1;
close all;
figure
pa = 0.3; pa = 0.3;
d_max = 30; d_max = 30;
am = 0.1;
as = 0.9;
Ad = 10;
Cm = 1;
s = zeros(1, Nh); s = zeros(1, Nh);
a = zeros(1, Nh); a = zeros(1, Nh);
Xm = zeros(1, Nh); Xm = zeros(1, Nh);
Xs = zeros(1, Nh); Xs = zeros(1, Nh);
peak_count = zeros(1, Nh); peak_count = zeros(1, Nh);
am = 0.1;
as = 0.9;
for k=1:64 close all;
figure
for k=1:128
% Peak generation % Peak generation
f = fix(N/2*rand());
k = f + 1; k = fix(Nh*rand() + 1);
if (rand() < pa) if (rand() < pa)
if (s(k) == 0) if (s(k) == 0)
a(k) = 1.0; a(k) = ks;
s(k) = fix(d_max*rand()); s(k) = fix(d_max*rand());
end end
end end
@@ -58,7 +61,8 @@ for k=1:64
for n = 1:Nh for n = 1:Nh
if s(n) > 0 if s(n) > 0
s(n) = s(n) - 1; s(n) = s(n) - 1;
x = x + a(n)*cos(2*pi*n*(0:N-1)/N); f = 0.5-rand() + n;
x = x + a(n)*cos(2*pi*f*(0:N-1)/N);
end end
end end
X = abs(fft(x))/sqrt(N); X = abs(fft(x))/sqrt(N);
@@ -67,9 +71,9 @@ for k=1:64
% Peak detection % Peak detection
Xs = (1-as)*Xs + as*X; Xs = (1-as)*Xs + as*X;
Xm_gate = Xs > (10+Xm); Xm_gate = Xs > (Ad+Xm);
peak_count = Xm_gate.*peak_count + Xm_gate; peak_count = Xm_gate.*peak_count + Xm_gate;
peak = peak_count > 1; peak = peak_count > Cm;
% Update Xm at no-peak bins % Update Xm at no-peak bins
Xm = (1-peak) .* ((1-am)*Xm + am*X) + peak.*Xm; Xm = (1-peak) .* ((1-am)*Xm + am*X) + peak.*Xm;