This is where navigation should be.

DSTI - Discrete Sine Transform type I

Usage

c=dsti(f);
c=dsti(f,L);
c=dsti(f,[],dim);
c=dsti(f,L,dim);

Description

dsti(f) computes the discrete sine transform of type I of the input signal f. If f is multi-dimensional, the transformation is applied along the first non-singleton dimension.

dsti(f,L) zero-pads or truncates f to length L before doing the transformation.

dsti(f,[],dim) or dsti(f,L,dim) applies the transformation along dimension dim.

The transform is real (output is real if input is real) and orthonormal.

This transform is its own inverse.

Let f be a signal of length L and let c=dsti(f). Then

\begin{equation*} c\left(n+1\right)=\sqrt{\frac{2}{L+1}}\sum_{m=0}^{L-1}f\left(m+1\right)\sin\left(\frac{\pi \left(n+1\right)\left(m+1\right)}{L+1}\right) \end{equation*}

The implementation of this functions uses a simple algorithm that requires an FFT of length \(2N+2\), which might potentially be the product of a large prime number. This may cause the function to sometimes execute slowly. If guaranteed high speed is a concern, please consider using one of the other DST transforms.

Examples:

The following figures show the first 4 basis functions of the DSTI of length 20:

% The dsti is its own adjoint.
F=dsti(eye(20));

for ii=1:4
  subplot(4,1,ii);
  stem(F(:,ii));
end;

References:

K. Rao and P. Yip. Discrete Cosine Transform, Algorithms, Advantages, Applications. Academic Press, 1990.

M. V. Wickerhauser. Adapted wavelet analysis from theory to software. Wellesley-Cambridge Press, Wellesley, MA, 1994.