Skip to content

Commit

Permalink
Allow Int16 signal without overflow
Browse files Browse the repository at this point in the history
  • Loading branch information
zsoerenm committed Feb 17, 2020
1 parent b734d80 commit 46cb6c1
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
2 changes: 1 addition & 1 deletion src/agc.jl
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,5 @@ end
max_imag_value = imag(signal[i])
end
end
sqrt(max_real_value^2 + max_imag_value^2)
sqrt(float(max_real_value)^2 + float(max_imag_value)^2)
end
13 changes: 12 additions & 1 deletion test/agc.jl
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
@testset "AGC" begin
@testset "Single signal" begin
signal = randn(ComplexF64, 100)
signal = rand(ComplexF64, 100)
agc_signal = GainControlledSignal(signal, 5)
real_max = maximum(real(x) for x in signal)
imag_max = maximum(imag(x) for x in signal)
Expand All @@ -11,6 +11,17 @@
@test Tracking.get_amplitude_power(agc_signal) == 5
@test real.(agc_signal.signal) floor.(Int16, real.(signal) .* amplification)
@test imag.(agc_signal.signal) floor.(Int16, imag.(signal) .* amplification)

signal = rand(Complex{Int16}, 100)
agc_signal = GainControlledSignal(signal, 5)
real_max = maximum(real(x) for x in signal)
imag_max = maximum(imag(x) for x in signal)
attenuation = sqrt(float(real_max)^2 + float(imag_max)^2)
amplification = 1 << 5 / attenuation
@test Tracking.get_attenuation(agc_signal) attenuation
@test Tracking.get_amplitude_power(agc_signal) == 5
@test real.(agc_signal.signal) floor.(Int16, real.(signal) .* amplification)
@test imag.(agc_signal.signal) floor.(Int16, imag.(signal) .* amplification)
end

@testset "Multiple signals" begin
Expand Down

0 comments on commit 46cb6c1

Please sign in to comment.