From f5e6b325a9e8b1b5b0b23fd35dd50e8ce412910b Mon Sep 17 00:00:00 2001 From: wheeheee <104880306+wheeheee@users.noreply.github.com> Date: Sat, 8 Feb 2025 15:08:44 +0800 Subject: [PATCH 1/3] implement `reset!` for FIRInterpolator and tests --- src/Filters/stream_filt.jl | 5 ++--- test/resample.jl | 6 ++++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Filters/stream_filt.jl b/src/Filters/stream_filt.jl index 21a7a5e1..46be170e 100644 --- a/src/Filters/stream_filt.jl +++ b/src/Filters/stream_filt.jl @@ -244,12 +244,11 @@ setphase!(self::FIRFilter, ϕ::Real) = setphase!(self.kernel, ϕ) # reset! filter and its kernel to an initial state # -# Generic case for FIRInterpolator and FIRStandard -function reset!(kernel::FIRKernel) +function reset!(kernel::FIRStandard) kernel end -function reset!(kernel::FIRRational) +function reset!(kernel::Union{FIRRational,FIRInterpolator}) kernel.ϕIdx = 1 kernel.inputDeficit = 1 kernel diff --git a/test/resample.jl b/test/resample.jl index 236cfb2d..0e1b5e19 100644 --- a/test/resample.jl +++ b/test/resample.jl @@ -63,6 +63,12 @@ end y_jl = resample(X_3d, rate, h_ml; dims=3) @test y_jl ≈ expected_result_3d + # also test FIRInterpolator is reset!ed properly (issue #625) + interp = 2 + v = randn(100) + res_v = resample(v, interp) + @test resample([v v], interp; dims=1) == [res_v res_v] + # check buffer is resized properly (vs old implementation) for dims in 1:3 A = rand(3, 3, 3) From 1edbc7a8e85862c76e55564aae0381d440d8cc89 Mon Sep 17 00:00:00 2001 From: wheeheee <104880306+wheeheee@users.noreply.github.com> Date: Sat, 8 Feb 2025 15:14:45 +0800 Subject: [PATCH 2/3] bump version to 0.8.2 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index e8c3a3a2..4117fddf 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "DSP" uuid = "717857b8-e6f2-59f4-9121-6e50c889abd2" -version = "0.8.1" +version = "0.8.2" [deps] Bessels = "0e736298-9ec6-45e8-9647-e4fc86a2fe38" From bf10e6765d3bebd65a835fd01ebd867a30655526 Mon Sep 17 00:00:00 2001 From: wheeheee <104880306+wheeheee@users.noreply.github.com> Date: Sun, 9 Feb 2025 13:56:25 +0800 Subject: [PATCH 3/3] repurpose existing test --- test/resample.jl | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/test/resample.jl b/test/resample.jl index 0e1b5e19..49802521 100644 --- a/test/resample.jl +++ b/test/resample.jl @@ -63,16 +63,11 @@ end y_jl = resample(X_3d, rate, h_ml; dims=3) @test y_jl ≈ expected_result_3d - # also test FIRInterpolator is reset!ed properly (issue #625) - interp = 2 - v = randn(100) - res_v = resample(v, interp) - @test resample([v v], interp; dims=1) == [res_v res_v] - # check buffer is resized properly (vs old implementation) - for dims in 1:3 + # also test that FIRInterpolator/Decimator is reset!ed properly (issue #625) + for dims in 1:3, rate in (1.2, 0.8, 4, 2//1, 1//2) A = rand(3, 3, 3) - @test resample(A, 1.2; dims) == mapslices(v -> resample(v, 1.2), A; dims) + @test resample(A, rate; dims) == mapslices(v -> resample(v, rate), A; dims) end end