changeset 20061:230c1e2a678d

blackman, hamming, hanning: Simplify handling of periodic window option * blackman.m, hamming.m, hanning.m: Simplify logic for handling periodic or symmetric window option.
author Mike Miller <mtmiller@octave.org>
date Sat, 04 Apr 2015 14:12:10 -0400
parents d209fbae38ae
children 70bb0bd4a53f
files scripts/signal/blackman.m scripts/signal/hamming.m scripts/signal/hanning.m
diffstat 3 files changed, 12 insertions(+), 30 deletions(-) [+]
line wrap: on
line diff
--- 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
 
 
--- 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
--- 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