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));
}