]> Creatis software - CreaPhase.git/blobdiff - octave_packages/signal-1.1.3/square.m
Add a useful package (from Source forge) for octave
[CreaPhase.git] / octave_packages / signal-1.1.3 / square.m
diff --git a/octave_packages/signal-1.1.3/square.m b/octave_packages/signal-1.1.3/square.m
new file mode 100644 (file)
index 0000000..4051cce
--- /dev/null
@@ -0,0 +1,31 @@
+## Author: Paul Kienzle <paulkienzle@Avocado.local> (2006)
+## This program is granted to the public domain.
+
+## -*- texinfo -*-
+## @deftypefn {Function File} {@var{s} =} square(@var{t}, @var{duty})
+## @deftypefnx {Function File} {@var{s} =} square(@var{t})
+## Generate a square wave of period 2 pi with limits +1/-1.
+##
+## If @var{duty} is specified, the square wave is +1 for
+## that portion of the time.
+##
+## @verbatim
+##                     on time
+##    duty cycle = ------------------
+##                 on time + off time
+## @end verbatim
+##
+## @seealso{cos, sawtooth, sin, tripuls}
+## @end deftypefn
+
+function v = square (t, duty = 0.5)
+
+  if (nargin < 1 || nargin > 2)
+    print_usage;
+  endif
+
+  t /= 2*pi;
+  v = ones(size(t));
+  v(t-floor(t) >= duty) = -1;
+
+endfunction