# HG changeset patch # User Mike Miller # Date 1428171130 14400 # Node ID 230c1e2a678d4d4d2d008675a852f160618de1f6 # Parent d209fbae38ae82b80bd07b69ddc193177b781af7 blackman, hamming, hanning: Simplify handling of periodic window option * blackman.m, hamming.m, hanning.m: Simplify logic for handling periodic or symmetric window option. diff -r d209fbae38ae -r 230c1e2a678d scripts/signal/blackman.m --- a/scripts/signal/blackman.m Sat Apr 04 12:51:05 2015 -0400 +++ b/scripts/signal/blackman.m Sat Apr 04 14:12:10 2015 -0400 @@ -45,11 +45,11 @@ error ("blackman: M must be a positive integer"); endif - periodic = false; + N = m - 1; if (nargin == 2) switch (opt) case "periodic" - periodic = true; + N = m; case "symmetric" ## Default option, same as no option specified. otherwise @@ -60,17 +60,11 @@ if (m == 1) c = 1; else - if (! periodic) - m = m - 1; - endif - k = (0 : m)' / m; + m = m - 1; + k = (0 : m)' / N; c = 0.42 - 0.5 * cos (2 * pi * k) + 0.08 * cos (4 * pi * k); endif - if (periodic) - c = c(1:end-1); - endif - endfunction diff -r d209fbae38ae -r 230c1e2a678d scripts/signal/hamming.m --- a/scripts/signal/hamming.m Sat Apr 04 12:51:05 2015 -0400 +++ b/scripts/signal/hamming.m Sat Apr 04 14:12:10 2015 -0400 @@ -45,11 +45,11 @@ error ("hamming: M must be a positive integer"); endif - periodic = false; + N = m - 1; if (nargin == 2) switch (opt) case "periodic" - periodic = true; + N = m; case "symmetric" ## Default option, same as no option specified. otherwise @@ -60,14 +60,8 @@ if (m == 1) c = 1; else - if (! periodic) - m = m - 1; - endif - c = 0.54 - 0.46 * cos (2 * pi * (0:m)' / m); - endif - - if (periodic) - c = c(1:end-1); + m = m - 1; + c = 0.54 - 0.46 * cos (2 * pi * (0 : m)' / N); endif endfunction diff -r d209fbae38ae -r 230c1e2a678d scripts/signal/hanning.m --- a/scripts/signal/hanning.m Sat Apr 04 12:51:05 2015 -0400 +++ b/scripts/signal/hanning.m Sat Apr 04 14:12:10 2015 -0400 @@ -45,11 +45,11 @@ error ("hanning: M must be a positive integer"); endif - periodic = false; + N = m - 1; if (nargin == 2) switch (opt) case "periodic" - periodic = true; + N = m; case "symmetric" ## Default option, same as no option specified. otherwise @@ -60,14 +60,8 @@ if (m == 1) c = 1; else - if (! periodic) - m = m - 1; - endif - c = 0.5 - 0.5 * cos (2 * pi * (0 : m)' / m); - endif - - if (periodic) - c = c(1:end-1); + m = m - 1; + c = 0.5 - 0.5 * cos (2 * pi * (0 : m)' / N); endif endfunction