From dd86a6186d000de38a6a60a4da479c406b0dc9b8 Mon Sep 17 00:00:00 2001 From: wheeheee <104880306+wheeheee@users.noreply.github.com> Date: Wed, 7 Feb 2024 14:57:52 +0800 Subject: [PATCH] move `conv` down --- src/dspbase.jl | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/dspbase.jl b/src/dspbase.jl index 673decd78..aaa7a7a1a 100644 --- a/src/dspbase.jl +++ b/src/dspbase.jl @@ -787,26 +787,23 @@ function xcorr( u::AbstractVector, v::AbstractVector; padmode::Symbol=:none, scaling::Symbol=:none ) su = size(u, 1); sv = size(v, 1) - res = if padmode == :longest + + if scaling == :biased && su != sv + throw(DimensionMismatch("scaling only valid for vectors of same length")) + end + + if padmode == :longest if su < sv u = _zeropad_keep_offset(u, sv) elseif sv < su v = _zeropad_keep_offset(v, su) end - conv(u, dsp_reverse(conj(v), axes(v))) - elseif padmode == :none - conv(u, dsp_reverse(conj(v), axes(v))) - else + elseif padmode != :none throw(ArgumentError("padmode keyword argument must be either :none or :longest")) end - if scaling == :biased - if su == sv - res ./= su - else - throw(DimensionMismatch("scaling only valid for vectors of same length")) - end - end + res = conv(u, dsp_reverse(conj(v), axes(v))) + scaling == :biased && res ./= su res end