scipy.fftpack.dst¶

scipy.fftpack.
dst
(x, type=2, n=None, axis=1, norm=None, overwrite_x=False)[source]¶ Return the Discrete Sine Transform of arbitrary type sequence x.
Parameters:  x : array_like
The input array.
 type : {1, 2, 3, 4}, optional
Type of the DST (see Notes). Default type is 2.
 n : int, optional
Length of the transform. If
n < x.shape[axis]
, x is truncated. Ifn > x.shape[axis]
, x is zeropadded. The default results inn = x.shape[axis]
. axis : int, optional
Axis along which the dst is computed; the default is over the last axis (i.e.,
axis=1
). norm : {None, ‘ortho’}, optional
Normalization mode (see Notes). Default is None.
 overwrite_x : bool, optional
If True, the contents of x can be destroyed; the default is False.
Returns:  dst : ndarray of reals
The transformed input array.
See also
idst
 Inverse DST
Notes
For a single dimension array
x
.There are theoretically 8 types of the DST for different combinations of even/odd boundary conditions and boundary off sets [1], only the first 3 types are implemented in scipy.
Type I
There are several definitions of the DSTI; we use the following for
norm=None
. DSTI assumes the input is odd around n=1 and n=N.N1 y[k] = 2 * sum x[n]*sin(pi*(k+1)*(n+1)/(N+1)) n=0
Note that the DSTI is only supported for input size > 1 The (unnormalized) DSTI is its own inverse, up to a factor 2(N+1). The orthonormalized DSTI is exactly its own inverse.
Type II
There are several definitions of the DSTII; we use the following for
norm=None
. DSTII assumes the input is odd around n=1/2 and n=N1/2; the output is odd around k=1 and even around k=N1N1 y[k] = 2* sum x[n]*sin(pi*(k+1)*(n+0.5)/N), 0 <= k < N. n=0
if
norm='ortho'
,y[k]
is multiplied by a scaling factor ff = sqrt(1/(4*N)) if k == 0 f = sqrt(1/(2*N)) otherwise.
Type III
There are several definitions of the DSTIII, we use the following (for
norm=None
). DSTIII assumes the input is odd around n=1 and even around n=N1N2 y[k] = x[N1]*(1)**k + 2* sum x[n]*sin(pi*(k+0.5)*(n+1)/N), 0 <= k < N. n=0
The (unnormalized) DSTIII is the inverse of the (unnormalized) DSTII, up to a factor 2N. The orthonormalized DSTIII is exactly the inverse of the orthonormalized DSTII.
New in version 0.11.0.
Type IV
There are several definitions of the DSTIV, we use the following (for
norm=None
). DSTIV assumes the input is odd around n=0.5 and even around n=N0.5N1 y[k] = 2* sum x[n]*sin(pi*(k+0.5)*(n+0.5)/N), 0 <= k < N. n=0
The (unnormalized) DSTIV is its own inverse, up to a factor 2N. The orthonormalized DSTIV is exactly its own inverse.
New in version 1.2.0: Support for DSTIV.
References
[1] (1, 2) Wikipedia, “Discrete sine transform”, https://en.wikipedia.org/wiki/Discrete_sine_transform