\newpage
{\bf \Huge optArray}
\leavevmode\leaders\hrule height 1mm \hfill
%\rule{2in}{1mm}
\vspace{0.25in}

{\bf Purpose}

\begin{quote}
Optimized affine multi-dimensional sequence constructor.
\end{quote}

{\bf Syntax}

\begin{quote}  
  {\tt  [seq] = optArray(locs,pool) } \\
   {\tt  [seq] = optArray(locs, vect)}\\
   {\tt  [seq] = optArray(locs, vect, 'a')} \\
 {\tt  [seq] = optArray(locs, x)} \\
 {\tt    [seq] = optArray(locs, x, 'c') } \\
  {\tt  [seq] = optArray(lattice, region, pool)} \\
 {\tt     [seq] = optArray() }
\end{quote}

{\bf Description}

\begin{quote}
   {\tt  [seq] = optArray(locs,pool) }
       creates an optimized affine sequence
       at locations given in {\tt locs} using pool of optimization
variables {\tt pool}.

   {\tt  [seq] = optArray(locs, vect)}\\
   {\tt  [seq] = optArray(locs, vect, 'a')}
       creates an optimized affine sequence from {\tt optVector vect}
       at locations given in {\tt locs}.
  
 {\tt  [seq] = optArray(locs, x)} \\
 {\tt    [seq] = optArray(locs, x, 'c') }
       creates a constant sequence from vector or sequence {\tt x}
       at time indices given in {\tt locs}.

  {\tt  [seq] = optArray(lattice, region, pool)}
       creates an optimized affine sequence at locations on a
       {\tt Lattice} within a {\tt Region}.

 {\tt     [seq] = optArray() }
       creates an empty sequence.
\end{quote}

%-----------------

\newpage
{\bf \Huge optArray/char, display}
\leavevmode\leaders\hrule height 1mm \hfill
%\rule{2in}{1mm}
\vspace{0.25in}

{\bf Purpose}

\begin{quote}
Output functions for class \optarr.
\end{quote}

{\bf Syntax}

\begin{quote}
{\tt c = char(seq)} \\
{\tt display(seq)}
\end{quote}

{\bf Descripition}

\begin{quote}
{\tt char} converts class \optarr\: to character for output.
{\tt display} is command window display of class \optarr.

Displays the kernel, offset into variable pool, pool number and support
locations.
\end{quote}

%---------div


\newpage
{\bf \Huge optArray/ctranspose}
\leavevmode\leaders\hrule height 1mm \hfill
%\rule{2in}{1mm}
\vspace{0.25in}

{\bf Purpose}

\begin{quote}
Conjugate flip.
\end{quote}

{\bf Syntax}

\begin{quote}
{\tt [tseq] = ctranspose(seq)  }
\end{quote}

{\bf Description}

\begin{quote}
Flips {\tt seq} about the origin and conjugates it.

{\tt [tseq] = ctranspose(seq) } is called for the syntax {\tt seq'}.
\end{quote}

%-----------------

\newpage
{\bf \Huge optArray/flip}
\leavevmode\leaders\hrule height 1mm \hfill
%\rule{2in}{1mm}
\vspace{0.25in}

{\bf Purpose}

\begin{quote}
Sequence flip.
\end{quote}

{\bf Syntax}

\begin{quote}
{\tt tseq = flip(seq, dim)  }
\end{quote}

{\bf Description}

\begin{quote}
Flips the sequence in dimension {\tt dim}.
\end{quote}

{\bf Examples}

\begin{quote}
To flip about the $y$-axis in 2-D, use {\tt flip(seq,1)}.

To flip about the $xy$-plane in 3-D, use {\tt flip(seq,3)}.
\end{quote}

%-----------------

\newpage
{\bf \Huge optArray/fourier}
\leavevmode\leaders\hrule height 1mm \hfill
%\rule{2in}{1mm}
\vspace{0.25in}

{\bf Purpose}

\begin{quote}
Sequence Fourier transform.
\end{quote}

{\bf Syntax}

\begin{quote}
{\tt G = fourier(g, f)  }
\end{quote}

{\bf Description}

\begin{quote}
 Returns Fourier transform of \optarr\: {\tt g} at {\tt f} as an \optarr,
  {\tt f} is a matrix in which each row indicates a point to evaluate
the freqeuncy response. 


\end{quote}

%-----------------

\newpage
{\bf \Huge optArray/get\_dim, get\_locs}
\leavevmode\leaders\hrule height 1mm \hfill
%\rule{2in}{1mm}
\vspace{0.25in}

{\bf Purpose}

\begin{quote}
Dimension and locations extraction functions.
\end{quote}

{\bf Syntax}

\begin{quote}
{\tt dim = get\_dim(seq)  }\\
{\tt locs = get\_locs(seq) }
\end{quote}

{\bf Description}

\begin{quote}
{\tt dim = get\_dim(seq) } returns the dimension of {\tt seq}.

{\tt locs = get\_locs(seq) } returns the locations of support of {\tt
seq} as a matrix, in which each row contains the coordinates of a single
point.
\end{quote}

%-----------------

\newpage
{\bf \Huge optArray/isempty}
\leavevmode\leaders\hrule height 1mm \hfill
%\rule{2in}{1mm}
\vspace{0.25in}

{\bf Purpose}

\begin{quote}
True for empty \optarr.
\end{quote}

{\bf Syntax}

\begin{quote}
{\tt [em] = isempty(seq)  }
\end{quote}

{\bf Description}

\begin{quote}
Returns 1 if {\tt seq} is an empty \optarr, and 0 otherwise.
\end{quote}

%-----------------

\newpage
{\bf \Huge optArray/minus}
\leavevmode\leaders\hrule height 1mm \hfill
%\rule{2in}{1mm}
\vspace{0.25in}

{\bf Purpose}

\begin{quote}
Sequence subtraction.
\end{quote}

{\bf Syntax}

\begin{quote}
{\tt [mseq] = minus(a, b)  }
\end{quote}

{\bf Description}

\begin{quote}
Subtracts \optarr\: {\tt b} from \optarr\: {\tt a}.

{\tt [mseq] = minus(a, b)} is called for the syntax {\tt a - b}.
\end{quote}

%-----------------

\newpage
{\bf \Huge optArray/mtimes}
\leavevmode\leaders\hrule height 1mm \hfill
%\rule{2in}{1mm}
\vspace{0.25in}

{\bf Purpose}

\begin{quote}
Sequence element-wise multiplication.
\end{quote}

{\bf Syntax}

\begin{quote}
{\tt [mseq] = mtimes(a, b)  }
\end{quote}

{\bf Description}

\begin{quote}
Muliplies {\tt a} by {\tt b}. It is legal to multiply a constant
sequence by a constant sequence of the same dimension; and an optimized
sequence by a constant sequence of the same dimension or a scalar.

{\tt [mseq] = mtimes(a, b)} is called for the syntax {\tt a * b}.
\end{quote}

%-----------------


\newpage
{\bf \Huge optArray/optimal}
\leavevmode\leaders\hrule height 1mm \hfill
%\rule{2in}{1mm}
\vspace{0.25in}

{\bf Purpose}

\begin{quote}
Return optimal sequence.
\end{quote}

{\bf Syntax}

\begin{quote}
{\tt optseq = optimal(opt, soln)  }
\end{quote}

{\bf Description}

\begin{quote}
Returns optimal constant sequence as given by {\tt soln}.
\end{quote}

%-----------------


\newpage
{\bf \Huge optSequence/or}
\leavevmode\leaders\hrule height 1mm \hfill
%\rule{2in}{1mm}
\vspace{0.25in}

{\bf Purpose}

\begin{quote}
Sequence linear shift.
\end{quote}

{\bf Syntax}

\begin{quote}
{\tt [sseq] = or(seq, offset)  }
\end{quote}

{\bf Description}

\begin{quote}
Shifts the sequence by {\tt offset}. {\tt offset} must
be a vector of the same dimension as {\tt seq}.

{\tt [sseq] = or(seq, offset)} is called for the syntax {\tt seq | offset}.
\end{quote}

%-----------------

\newpage
{\bf \Huge optArray/plot}
\leavevmode\leaders\hrule height 1mm \hfill
%\rule{2in}{1mm}
\vspace{0.25in}

{\bf Purpose}

\begin{quote}
Graphical representation of \optarr.
\end{quote}

{\bf Syntax}

\begin{quote}
{\tt plot(seq)  } \\
{\tt plot(seq, ...) }
\end{quote}

{\bf Description}

\begin{quote}
Plots \optarr\: {\tt seq}, which can be 1-, 2- or 3-dimensional.

    {\tt plot(seq, ...)}  plots seq with comma-separated list 
        of plotting options.
        options can be one or more of:
\begin{itemize}
\item
   {\tt 'color}, {\tt 'nocolor'}: 
 whether to use color coding in plots; green if
                       constant, blue if dependent on the
                       optimization variables, and red if affine.
                       Also, whether to plot a star for complex
                       values and circle for real value, or only
                       circles. \\
                       Default: {\tt 'nocolor'}
\item
  {\tt 'label'}, {\tt 'nolabel'}:  whether to print labels of array
elements. \\
                       Default: {\tt 'nolabel'}
\item
  {\tt 'print'}, {\tt 'noprint'}:  whether to use formatting suitable for
                       printout. \\ Default: {\tt 'noprint'}
\item
  {\tt 'stagger'}, {\tt 'nostagger'}: whether to stagger labels in 1-D plots
                       readability
\item
          {\tt 'FontSize'}:  font size of labels. To be followed the font
                       size value.
\item
         {\tt 'LineWidth'}:  Width of line used in stem plot. Followed by
                       line width value.
\item
        {\tt 'MarkerSize'}:  Size of marker in stem plots.
\end{itemize}
\end{quote}

%-----------------


\newpage
{\bf \Huge optArray/plus}
\leavevmode\leaders\hrule height 1mm \hfill
%\rule{2in}{1mm}
\vspace{0.25in}

{\bf Purpose}

\begin{quote}
Sequence addition.
\end{quote}

{\bf Syntax}

\begin{quote}
{\tt [pseq] = plus(a, b)  }
\end{quote}

{\bf Description}

\begin{quote}
Adds {\tt optArray}s {\tt a} and {\tt b}.

{\tt [pseq] = plus(a, b)} is called for the syntax {\tt a + b}.
\end{quote}

%-----------------


\newpage
{\bf \Huge optArray/rot}
\leavevmode\leaders\hrule height 1mm \hfill
%\rule{2in}{1mm}
\vspace{0.25in}

{\bf Purpose}

\begin{quote}
Sequence rotation.
\end{quote}

{\bf Syntax}

\begin{quote}
{\tt [tseq] = rot(seq, ang, dims) }
\end{quote}

{\bf Description}

\begin{quote}
 Rotates the sequence by {\tt ang} radians in dimensions {\tt dims}.
 {\tt dims} is a length-2 vector indicating the subspace in which
  the rotation is performed.
  For example, {\tt rot(seq, pi/4, [1 3])} will rotate {\tt seq} 45 degrees 
  in the $xz$-subspace.
\end{quote}

%-----------------

\newpage
{\bf \Huge optArray/set\_locs}
\leavevmode\leaders\hrule height 1mm \hfill
%\rule{2in}{1mm}
\vspace{0.25in}

{\bf Purpose}

\begin{quote}
Sequence locations insertion function.
\end{quote}

{\bf Syntax}

\begin{quote}
{\tt [tseq] = set\_locs(seq, locs)  }
\end{quote}

{\bf Description}

\begin{quote}
Returns the sequence {\tt seq} with support locations replaced by {\tt
locs}. {\tt locs} must be a matrix with each row giving the coordinates
of an individual point.
\end{quote}

%-----------------

\newpage
{\bf \Huge optArray/subsref}
\leavevmode\leaders\hrule height 1mm \hfill
%\rule{2in}{1mm}
\vspace{0.25in}

{\bf Purpose}

\begin{quote}
Sequence subscripted reference.
\end{quote}

{\bf Syntax}

\begin{quote}
{\tt subs = seq(locs)  } \\
{\tt subs = seq([xmin xmax ymin ymax ...]) } \\
{\tt subs = seq(n, 'i') } \\
{\tt subs = seq(reg) }
\end{quote}

{\bf Description}

\begin{quote}
{\tt seq(locs)} returns a subsequence at locations given in {\tt locs}.

{\tt subs = seq([xmin xmax ymin ymax ...]) } returns a subsequence
located in a hypercube which is described using the intervals
$[x_{\mbox{min}}, x_{\mbox{max}}]$ and so forth.

{\tt subs = seq(n, 'i') } returns a subsequence using 'Matlab' indices. For
 example, {\tt seq(1:4, 'i')}  returns a sequence containing the first
 through fourth elements of {\tt seq}.

{\tt subs = seq(reg)} returns a subsequence with only those elements
 within a region indicated by the {\tt Region} object {\tt reg}.
\end{quote}

%---------------------


\newpage
{\bf \Huge optArray/times}
\leavevmode\leaders\hrule height 1mm \hfill
%\rule{2in}{1mm}
\vspace{0.25in}

{\bf Purpose}

\begin{quote}
Sequence convolution.
\end{quote}

{\bf Syntax}

\begin{quote}
{\tt [cseq] = times(a, b)  }
\end{quote}

{\bf Description}

\begin{quote}
Convolves {\tt optArray}s {\tt a} and {\tt b}, one of which must not
depend on the optimization variables (constant sequence). 

{\tt [cseq] = times(a, b)} is called for the syntax {\tt a .* b}.

\end{quote}

%-----------------

\newpage
{\bf \Huge optArray/transpose}
\leavevmode\leaders\hrule height 1mm \hfill
%\rule{2in}{1mm}
\vspace{0.25in}

{\bf Purpose}

\begin{quote}
Sequence flip.
\end{quote}

{\bf Syntax}

\begin{quote}
{\tt [tseq] = transpose(seq)  }
\end{quote}

{\bf Description}

\begin{quote}
Flips {\tt seq} about the origin.

{\tt [tseq] = transpose(seq) } is called for the syntax {\tt seq.'}.
\end{quote}

%-----------------
