View Raw SPL
/*****************************************************************************
*                                                                            *
*   FLATTOP.SPL   Copyright (C) 2004, 2010 DSP Development Corporation       *
*                               All Rights Reserved                          *
*                                                                            *
*   Author:       Randy Race                                                 *
*                                                                            *
*   Synopsis:     Multiplies a series with a Hamming Window                  *
*                                                                            *
*   Revisions:    21 Jan 2004  RRR  Creation                                 *
*                 21 Jul 2010  RRR  symmetry flag                            *
*                                                                            *
*****************************************************************************/


#if @HELP_FLATTOP

    FLATTOP

    Purpose: Multiplies a series with a Flattop

    Syntax:  FLATTOP(s, ampflag, method, "sym")

                    s - A series or array

              ampflag - Optional, an integer, the correction factor.

                         0: do not correct amplitude (default)
                         1: correct amplitude
                         2: correct RMS 
                         3: correct mean squared amplitude

               method - an optional integer, the generation method.

                         0: ISO 18431-1 4 point method (default)
                         1: Two point generation formula
                         2: Alternate four point formula
                         3: HP P301
                         4: HP four point formula
                         5: Modifed HP P401 five point formula
                         6: Rohde & Schwartz 4 point formula

                "sym" - Optional. A string, the symmetry mode.

                         "symmetric" : Starting and ending points are equal.
 
                         "periodic"  : Periodically extended window. Conforms 
                                       to ISO standard (default).

                              "iso"  : Same as "periodic".

   Alternate Syntax:  
             
             FLATTOP(N, ampflag, method, "sym")

                    N - An integer, the length of the window.

              ampflag - Optional, an integer, the correction factor.

                         0: do not correct amplitude (default)
                         1: correct amplitude
                         2: correct RMS 
                         3: correct mean squared amplitude

               method - an optional integer, the generation method.

                         0: ISO 18431-1 4 point method (default)
                         1: Two point generation formula
                         2: Alternate four point formula
                         3: HP P301
                         4: HP four point formula
                         5: Modifed HP P401 five point formula
                         6: Rohde & Schwartz 4 point formula

                "sym" - Optional. A string, the symmetry mode.

                         "symmetric" : Starting and ending points are equal.
 
                         "periodic"  : Periodically extended window. Conforms 
                                       to ISO standard (default).

                              "iso"  : Same as "periodic".

    Returns: A series or array

    Example:
             W1: gsin(1000, .001, 45)
             W2: spectrum(flattop(W1))

             The MAX of W2 == 1.0 at 45 Hertz.

    Example:
             flattop(1000, "periodic")

             returns a 1000 point periodic flattop window.

    Remarks:
             The Flattop window preserves the amplitude characteristics of
             the input series at the expense of frequency domain "smearing".

             If the input is an integer rather than a series, the N
             point flattop window is returned.

             If ampflag == 1, the correction factor is the mean of
             the spectral window. This assures that the spectrum of a
             sinusoid of amplitude 1.0 has a peak of 1.0.

             If ampflag == 2, the correction is applied as follows:

             w = flattop(s) * rms(s) / rms(flattop(s))

             sqrt(area(psd(w))) == rms(s)    approximately

             If ampflag == 3, the correction is applied as follows:

             w = flattop(s) / sqrt(win * win / length(win))

             where win is the windowing function.

             The "sym" flag controls the window symmetry as follows: 

             "Symmetric" sets the first and last points to be equal. 
             An N point symmetric window can be constructed by creating
             an N-1 point periodic window and setting the Nth point to
             the value of the first point.

             "Periodic" or "iso" creates a periodic window function
             useful in spectrum analysis applications."Periodic" or
             "iso" conforms to the ISO 18431-1 standard for windowing
             functions and is the default for FLATTOP.

             See GFLATTOP for a further discussion of the flatop window
             generation methods.

    See Also:
             gflattop
             hamming
             hanning
             kaiser
             winfunc
#endif


/* multiply a series with a flattop window */
SERIES flattop(s, ampflag, method, sym)
{
        return(winfunc(4, s, ampflag, method, sym));
}