Documentation

Overview

Package window provides a set of functions to perform the transformation of sequence by different window functions.

Window functions can be used to control spectral leakage parameters when performing a Fourier transform on a signal of limited length. See https://en.wikipedia.org/wiki/Window_function for more details.

Spectral leakage parameters

Application of window functions to an input will result in changes to the frequency content of the signal in an effect called spectral leakage. See https://en.wikipedia.org/wiki/Spectral_leakage.

The characteristic changes associated with each window function may be described using a set of spectral leakage parameters; β, ΔF_0, ΔF_0.5, K and ɣ_max.

The β, attenuation, coefficient of a window is the ratio of the constant component of the spectrum resulting from use of the window compared to that produced using the rectangular window, expressed in a logarithmic scale.

β_w = 20 log10(A_w / A_rect) dB

The ΔF_0 parameter describes the normalized width of the main lobe of the frequency spectrum at zero amplitude.

The ΔF_0.5 parameter describes the normalized width of the main lobe of the frequency spectrum at -3 dB (half maximum amplitude).

The K parameter describes the relative width of the main lobe of the frequency spectrum produced by the window compared with the rectangular window. The rectangular window has the lowest ΔF_0 at a value of 2.

K_w = ΔF_0_w/ΔF_0_rect.

The value of K divides windows into high resolution windows (K≤3) and low resolution windows (K>3).

The ɣ_max parameter is the maximum level of the side lobes of the normalized spectrum, in decibels.

Example
Output:


Rectangular window (or no window):
freq=0.0000	cycles/period, magnitude=2.2798,	phase=0.0000
freq=0.0500	cycles/period, magnitude=2.6542,	phase=0.1571
freq=0.1000	cycles/period, magnitude=5.3115,	phase=0.3142
freq=0.1500	cycles/period, magnitude=7.3247,	phase=-2.6704
freq=0.2000	cycles/period, magnitude=1.6163,	phase=-2.5133
freq=0.2500	cycles/period, magnitude=0.7681,	phase=-2.3562
freq=0.3000	cycles/period, magnitude=0.4385,	phase=-2.1991
freq=0.3500	cycles/period, magnitude=0.2640,	phase=-2.0420
freq=0.4000	cycles/period, magnitude=0.1530,	phase=-1.8850
freq=0.4500	cycles/period, magnitude=0.0707,	phase=-1.7279
freq=0.5000	cycles/period, magnitude=0.0000,	phase=0.0000
Hamming window:
freq=0.0000	cycles/period, magnitude=0.0542,	phase=3.1416
freq=0.0500	cycles/period, magnitude=0.8458,	phase=-2.9845
freq=0.1000	cycles/period, magnitude=7.1519,	phase=0.3142
freq=0.1500	cycles/period, magnitude=8.5907,	phase=-2.6704
freq=0.2000	cycles/period, magnitude=2.0804,	phase=0.6283
freq=0.2500	cycles/period, magnitude=0.0816,	phase=0.7854
freq=0.3000	cycles/period, magnitude=0.0156,	phase=-2.1991
freq=0.3500	cycles/period, magnitude=0.0224,	phase=-2.0420
freq=0.4000	cycles/period, magnitude=0.0163,	phase=-1.8850
freq=0.4500	cycles/period, magnitude=0.0083,	phase=-1.7279
freq=0.5000	cycles/period, magnitude=0.0000,	phase=0.0000

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func BartlettHann

func BartlettHann(seq []float64) []float64

    BartlettHann modifies seq in place by the Bartlett-Hann window and returns result. See https://en.wikipedia.org/wiki/Window_function#Bartlett%E2%80%93Hann_window and https://www.recordingblogs.com/wiki/bartlett-hann-window for details.

    The Bartlett-Hann window is a high-resolution window.

    The sequence weights are

    w[k] = 0.62 - 0.48*|k/(N-1)-0.5| - 0.38*cos(2*π*k/(N-1)),
    

    for k=0,1,...,N-1 where N is the length of the window.

    Spectral leakage parameters: ΔF_0 = 4, ΔF_0.5 = 1.45, K = 2, ɣ_max = -35.9, β = -6.

    func BartlettHannComplex

    func BartlettHannComplex(seq []complex128) []complex128

      BartlettHannComplex modifies seq in place by the Bartlett-Hann window and returns result. See https://en.wikipedia.org/wiki/Window_function#Bartlett%E2%80%93Hann_window and https://www.recordingblogs.com/wiki/bartlett-hann-window for details.

      The Bartlett-Hann window is a high-resolution window.

      The sequence weights are

      w[k] = 0.62 - 0.48*|k/(N-1)-0.5| - 0.38*cos(2*π*k/(N-1)),
      

      for k=0,1,...,N-1 where N is the length of the window.

      Spectral leakage parameters: ΔF_0 = 4, ΔF_0.5 = 1.45, K = 2, ɣ_max = -35.9, β = -6.

      func Blackman

      func Blackman(seq []float64) []float64

        Blackman modifies seq in place by the Blackman window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Blackman_window and https://www.recordingblogs.com/wiki/blackman-window for details.

        The Blackman window is a high-resolution window.

        The sequence weights are

        w[k] = 0.42 - 0.5*cos(2*π*k/(N-1)) + 0.08*cos(4*π*k/(N-1)),
        

        for k=0,1,...,N-1 where N is the length of the window.

        Spectral leakage parameters: ΔF_0 = 6, ΔF_0.5 = 1.7, K = 3, ɣ_max = -58, β = -7.54.

        func BlackmanComplex

        func BlackmanComplex(seq []complex128) []complex128

          BlackmanComplex modifies seq in place by the Blackman window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Blackman_window and https://www.recordingblogs.com/wiki/blackman-window for details.

          The Blackman window is a high-resolution window.

          The sequence weights are

          w[k] = 0.42 - 0.5*cos(2*π*k/(N-1)) + 0.08*cos(4*π*k/(N-1)),
          

          for k=0,1,...,N-1 where N is the length of the window.

          Spectral leakage parameters: ΔF_0 = 6, ΔF_0.5 = 1.7, K = 3, ɣ_max = -58, β = -7.54.

          func BlackmanHarris

          func BlackmanHarris(seq []float64) []float64

            BlackmanHarris modifies seq in place by the Blackman-Harris window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Blackman%E2%80%93Harris_window and https://www.recordingblogs.com/wiki/blackman-harris-window for details.

            The Blackman-Harris window is a low-resolution window.

            The sequence weights are

            w[k] = 0.35875 - 0.48829*cos(2*π*k/(N-1)) +
                   0.14128*cos(4*π*k/(N-1)) - 0.01168*cos(6*π*k/(N-1)),
            

            for k=0,1,...,N-1 where N is the length of the window.

            Spectral leakage parameters: ΔF_0 = 8, ΔF_0.5 = 1.97, K = 4, ɣ_max = -92, β = -8.91.

            func BlackmanHarrisComplex

            func BlackmanHarrisComplex(seq []complex128) []complex128

              BlackmanHarrisComplex modifies seq in place by the Blackman-Harris window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Blackman%E2%80%93Harris_window and https://www.recordingblogs.com/wiki/blackman-harris-window for details.

              The Blackman-Harris window is a low-resolution window.

              The sequence weights are

              w[k] = 0.35875 - 0.48829*cos(2*π*k/(N-1)) +
                     0.14128*cos(4*π*k/(N-1)) - 0.01168*cos(6*π*k/(N-1)),
              

              for k=0,1,...,N-1 where N is the length of the window.

              Spectral leakage parameters: ΔF_0 = 8, ΔF_0.5 = 1.97, K = 4, ɣ_max = -92, β = -8.91.

              func BlackmanNuttall

              func BlackmanNuttall(seq []float64) []float64

                BlackmanNuttall modifies seq in place by the Blackman-Nuttall window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Blackman%E2%80%93Nuttall_window and https://www.recordingblogs.com/wiki/blackman-nuttall-window for details.

                The Blackman-Nuttall window is a low-resolution window.

                The sequence weights are

                w[k] = 0.3635819 - 0.4891775*cos(2*π*k/(N-1)) + 0.1365995*cos(4*π*k/(N-1)) -
                       0.0106411*cos(6*π*k/(N-1)),
                

                for k=0,1,...,N-1 where N is the length of the window.

                Spectral leakage parameters: ΔF_0 = 8, ΔF_0.5 = 1.94, K = 4, ɣ_max = -98, β = -8.8.

                func BlackmanNuttallComplex

                func BlackmanNuttallComplex(seq []complex128) []complex128

                  BlackmanNuttallComplex modifies seq in place by the Blackman-Nuttall window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Blackman%E2%80%93Nuttall_window and https://www.recordingblogs.com/wiki/blackman-nuttall-window for details.

                  The Blackman-Nuttall window is a low-resolution window.

                  The sequence weights are

                  w[k] = 0.3635819 - 0.4891775*cos(2*π*k/(N-1)) + 0.1365995*cos(4*π*k/(N-1)) -
                         0.0106411*cos(6*π*k/(N-1)),
                  

                  for k=0,1,...,N-1 where N is the length of the window.

                  Spectral leakage parameters: ΔF_0 = 8, ΔF_0.5 = 1.94, K = 4, ɣ_max = -98, β = -8.8.

                  func FlatTop

                  func FlatTop(seq []float64) []float64

                    FlatTop modifies seq in place by the Flat Top window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Flat_top_window and https://www.recordingblogs.com/wiki/flat-top-window for details.

                    The Flat Top window is a low-resolution window.

                    The sequence weights are

                    w[k] = 0.21557895 - 0.41663158*cos(2*π*k/(N-1)) +
                           0.277263158*cos(4*π*k/(N-1)) - 0.083578947*cos(6*π*k/(N-1)) +
                           0.006947368*cos(4*π*k/(N-1)),
                    

                    for k=0,1,...,N-1 where N is the length of the window.

                    Spectral leakage parameters: ΔF_0 = 10, ΔF_0.5 = 3.72, K = 5, ɣ_max = -93.0, β = -13.34.

                    func FlatTopComplex

                    func FlatTopComplex(seq []complex128) []complex128

                      FlatTopComplex modifies seq in place by the Flat Top window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Flat_top_window and https://www.recordingblogs.com/wiki/flat-top-window for details.

                      The Flat Top window is a low-resolution window.

                      The sequence weights are

                      w[k] = 0.21557895 - 0.41663158*cos(2*π*k/(N-1)) +
                             0.277263158*cos(4*π*k/(N-1)) - 0.083578947*cos(6*π*k/(N-1)) +
                             0.006947368*cos(4*π*k/(N-1)),
                      

                      for k=0,1,...,N-1 where N is the length of the window.

                      Spectral leakage parameters: ΔF_0 = 10, ΔF_0.5 = 3.72, K = 5, ɣ_max = -93.0, β = -13.34.

                      func Hamming

                      func Hamming(seq []float64) []float64

                        Hamming modifies seq in place by the Hamming window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Hann_and_Hamming_windows and https://www.recordingblogs.com/wiki/hamming-window for details.

                        The Hamming window is a high-resolution window. Among K=2 windows it has the highest ɣ_max.

                        The sequence weights are

                        w[k] = 25/46 - 21/46 * cos(2*π*k/(N-1)),
                        

                        for k=0,1,...,N-1 where N is the length of the window.

                        Spectral leakage parameters: ΔF_0 = 4, ΔF_0.5 = 1.33, K = 2, ɣ_max = -42, β = -5.37.

                        Example
                        Output:
                        
                        
                        src:    [1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000]
                        srcCpy: [0.080000 0.104924 0.176995 0.288404 0.427077 0.577986 0.724780 0.851550 0.944558 0.993726 0.993726 0.944558 0.851550 0.724780 0.577986 0.427077 0.288404 0.176995 0.104924 0.080000]
                        dst:    [0.080000 0.104924 0.176995 0.288404 0.427077 0.577986 0.724780 0.851550 0.944558 0.993726 0.993726 0.944558 0.851550 0.724780 0.577986 0.427077 0.288404 0.176995 0.104924 0.080000]
                        

                        func HammingComplex

                        func HammingComplex(seq []complex128) []complex128

                          HammingComplex modifies seq in place by the Hamming window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Hann_and_Hamming_windows and https://www.recordingblogs.com/wiki/hamming-window for details.

                          The Hamming window is a high-resolution window. Among K=2 windows it has the highest ɣ_max.

                          The sequence weights are

                          w[k] = 25/46 - 21/46 * cos(2*π*k/(N-1)),
                          

                          for k=0,1,...,N-1 where N is the length of the window.

                          Spectral leakage parameters: ΔF_0 = 4, ΔF_0.5 = 1.33, K = 2, ɣ_max = -42, β = -5.37.

                          func Hann

                          func Hann(seq []float64) []float64

                            Hann modifies seq in place by the Hann window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Hann_and_Hamming_windows and https://www.recordingblogs.com/wiki/hann-window for details.

                            The Hann window is a high-resolution window.

                            The sequence weights are

                            w[k] = 0.5*(1 - cos(2*π*k/(N-1))),
                            

                            for k=0,1,...,N-1 where N is the length of the window.

                            Spectral leakage parameters: ΔF_0 = 4, ΔF_0.5 = 1.5, K = 2, ɣ_max = -31.5, β = -6.

                            func HannComplex

                            func HannComplex(seq []complex128) []complex128

                              HannComplex modifies seq in place by the Hann window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Hann_and_Hamming_windows and https://www.recordingblogs.com/wiki/hann-window for details.

                              The Hann window is a high-resolution window.

                              The sequence weights are

                              w[k] = 0.5*(1 - cos(2*π*k/(N-1))),
                              

                              for k=0,1,...,N-1 where N is the length of the window.

                              Spectral leakage parameters: ΔF_0 = 4, ΔF_0.5 = 1.5, K = 2, ɣ_max = -31.5, β = -6.

                              func Lanczos

                              func Lanczos(seq []float64) []float64

                                Lanczos modifies seq in place by the Lanczos window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Lanczos_window and https://www.recordingblogs.com/wiki/lanczos-window for details.

                                The Lanczos window is a high-resolution window.

                                The sequence weights are

                                w[k] = sinc(2*k/(N-1) - 1),
                                

                                for k=0,1,...,N-1 where N is the length of the window.

                                Spectral leakage parameters: ΔF_0 = 3.24, ΔF_0.5 = 1.3, K = 1.62, ɣ_max = -26.4, β = -4.6.

                                func LanczosComplex

                                func LanczosComplex(seq []complex128) []complex128

                                  LanczosComplex modifies seq in place by the Lanczos window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Lanczos_window and https://www.recordingblogs.com/wiki/lanczos-window for details.

                                  The Lanczos window is a high-resolution window.

                                  The sequence weights are

                                  w[k] = sinc(2*k/(N-1) - 1),
                                  

                                  for k=0,1,...,N-1 where N is the length of the window.

                                  Spectral leakage parameters: ΔF_0 = 3.24, ΔF_0.5 = 1.3, K = 1.62, ɣ_max = -26.4, β = -4.6.

                                  func Nuttall

                                  func Nuttall(seq []float64) []float64

                                    Nuttall modifies seq in place by the Nuttall window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Nuttall_window,_continuous_first_derivative and https://www.recordingblogs.com/wiki/nuttall-window for details.

                                    The Nuttall window is a low-resolution window.

                                    The sequence weights are

                                    w[k] = 0.355768 - 0.487396*cos(2*π*k/(N-1)) + 0.144232*cos(4*π*k/(N-1)) -
                                           0.012604*cos(6*π*k/(N-1)),
                                    

                                    for k=0,1,...,N-1 where N is the length of the window.

                                    Spectral leakage parameters: ΔF_0 = 8, ΔF_0.5 = 1.98, K = 4, ɣ_max = -93, β = -9.

                                    func NuttallComplex

                                    func NuttallComplex(seq []complex128) []complex128

                                      NuttallComplex modifies seq in place by the Nuttall window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Nuttall_window,_continuous_first_derivative and https://www.recordingblogs.com/wiki/nuttall-window for details.

                                      The Nuttall window is a low-resolution window.

                                      The sequence weights are

                                      w[k] = 0.355768 - 0.487396*cos(2*π*k/(N-1)) + 0.144232*cos(4*π*k/(N-1)) -
                                             0.012604*cos(6*π*k/(N-1)),
                                      

                                      for k=0,1,...,N-1 where N is the length of the window.

                                      Spectral leakage parameters: ΔF_0 = 8, ΔF_0.5 = 1.98, K = 4, ɣ_max = -93, β = -9.

                                      func Rectangular

                                      func Rectangular(seq []float64) []float64

                                        Rectangular modifies seq in place by the Rectangular window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Rectangular_window and https://www.recordingblogs.com/wiki/rectangular-window for details.

                                        The rectangular window has the lowest width of the main lobe and largest level of the side lobes. The result corresponds to a selection of limited length sequence of values without any modification.

                                        The sequence weights are

                                        w[k] = 1,
                                        

                                        for k=0,1,...,N-1 where N is the length of the window.

                                        Spectral leakage parameters: ΔF_0 = 2, ΔF_0.5 = 0.89, K = 1, ɣ_max = -13, β = 0.

                                        func RectangularComplex

                                        func RectangularComplex(seq []complex128) []complex128

                                          Rectangular modifies seq in place by the Rectangular window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Rectangular_window and https://www.recordingblogs.com/wiki/rectangular-window for details.

                                          The rectangular window has the lowest width of the main lobe and largest level of the side lobes. The result corresponds to a selection of limited length sequence of values without any modification.

                                          The sequence weights are

                                          w[k] = 1,
                                          

                                          for k=0,1,...,N-1 where N is the length of the window.

                                          Spectral leakage parameters: ΔF_0 = 2, ΔF_0.5 = 0.89, K = 1, ɣ_max = -13, β = 0.

                                          func Sine

                                          func Sine(seq []float64) []float64

                                            Sine modifies seq in place by the Sine window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Sine_window and https://www.recordingblogs.com/wiki/sine-window for details.

                                            Sine window is a high-resolution window.

                                            The sequence weights are

                                            w[k] = sin(π*k/(N-1)),
                                            

                                            for k=0,1,...,N-1 where N is the length of the window.

                                            Spectral leakage parameters: ΔF_0 = 3, ΔF_0.5 = 1.23, K = 1.5, ɣ_max = -23, β = -3.93.

                                            func SineComplex

                                            func SineComplex(seq []complex128) []complex128

                                              SineComplex modifies seq in place by the Sine window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Sine_window and https://www.recordingblogs.com/wiki/sine-window for details.

                                              Sine window is a high-resolution window.

                                              The sequence weights are

                                              w[k] = sin(π*k/(N-1)),
                                              

                                              for k=0,1,...,N-1 where N is the length of the window.

                                              Spectral leakage parameters: ΔF_0 = 3, ΔF_0.5 = 1.23, K = 1.5, ɣ_max = -23, β = -3.93.

                                              func Triangular

                                              func Triangular(seq []float64) []float64

                                                Triangular modifies seq in place by the Triangular window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Triangular_window and https://www.recordingblogs.com/wiki/triangular-window for details.

                                                The Triangular window is a high-resolution window.

                                                The sequence weights are

                                                w[k] = 1 - |k/A -1|, A=(N-1)/2,
                                                

                                                for k=0,1,...,N-1 where N is the length of the window.

                                                Spectral leakage parameters: ΔF_0 = 4, ΔF_0.5 = 1.33, K = 2, ɣ_max = -26.5, β = -6.

                                                func TriangularComplex

                                                func TriangularComplex(seq []complex128) []complex128

                                                  TriangularComplex modifies seq in place by the Triangular window and returns the result. See https://en.wikipedia.org/wiki/Window_function#Triangular_window and https://www.recordingblogs.com/wiki/triangular-window for details.

                                                  The Triangular window is a high-resolution window.

                                                  The sequence weights are

                                                  w[k] = 1 - |k/A -1|, A=(N-1)/2,
                                                  

                                                  for k=0,1,...,N-1 where N is the length of the window.

                                                  Spectral leakage parameters: ΔF_0 = 4, ΔF_0.5 = 1.33, K = 2, ɣ_max = -26.5, β = -6.

                                                  Types

                                                  type Gaussian

                                                  type Gaussian struct {
                                                  	Sigma float64
                                                  }

                                                    Gaussian can modify a sequence using the Gaussian window and return the result. See https://en.wikipedia.org/wiki/Window_function#Gaussian_window and https://www.recordingblogs.com/wiki/gaussian-window for details.

                                                    The Gaussian window is an adjustable window.

                                                    The sequence weights are

                                                    w[k] = exp(-0.5 * ((k-M)/(σ*M))² ), M = (N-1)/2,
                                                    

                                                    for k=0,1,...,N-1 where N is the length of the window.

                                                    The properties of the window depend on the value of σ (sigma). It can be used as high or low resolution window, depending of the σ value.

                                                    Spectral leakage parameters are summarized in the table:

                                                           |  σ=0.3  |  σ=0.5 |  σ=1.2 |
                                                    -------|---------------------------|
                                                    ΔF_0   |   8     |   3.4  |   2.2  |
                                                    ΔF_0.5 |   1.82  |   1.2  |   0.94 |
                                                    K      |   4     |   1.7  |   1.1  |
                                                    ɣ_max  | -65     | -31.5  | -15.5  |
                                                    β      |  -8.52  |  -4.48 |  -0.96 |
                                                    

                                                    func (Gaussian) Transform

                                                    func (g Gaussian) Transform(seq []float64) []float64

                                                      Transform applies the Gaussian transformation to seq in place, using the value of the receiver as the sigma parameter, and returning the result.

                                                      func (Gaussian) TransformComplex

                                                      func (g Gaussian) TransformComplex(seq []complex128) []complex128

                                                        TransformComplex applies the Gaussian transformation to seq in place, using the value of the receiver as the sigma parameter, and returning the result.

                                                        type Tukey

                                                        type Tukey struct {
                                                        	Alpha float64
                                                        }

                                                          Tukey can modify a sequence using the Tukey window and return the result. See https://en.wikipedia.org/wiki/Window_function#Tukey_window and https://www.recordingblogs.com/wiki/tukey-window for details.

                                                          The Tukey window is an adjustable window.

                                                          The sequence weights are

                                                          w[k] = 0.5 * (1 + cos(π*(|k - M| - αM)/((1-α) * M))), |k - M| ≥ αM
                                                               = 1, |k - M| < αM
                                                          

                                                          with M = (N - 1)/2 for k=0,1,...,N-1 where N is the length of the window.

                                                          Spectral leakage parameters are summarized in the table:

                                                                 |  α=0.3 |  α=0.5 |  α=0.7 |
                                                          -------|--------------------------|
                                                          ΔF_0   |   1.33 |   1.22 |   1.13 |
                                                          ΔF_0.5 |   1.28 |   1.16 |   1.04 |
                                                          K      |   0.67 |   0.61 |   0.57 |
                                                          ɣ_max  | -18.2  | -15.1  | -13.8  |
                                                          β      |  -1.41 |  -2.50 |  -3.74 |
                                                          

                                                          func (Tukey) Transform

                                                          func (t Tukey) Transform(seq []float64) []float64

                                                            Transform applies the Tukey transformation to seq in place, using the value of the receiver as the Alpha parameter, and returning the result

                                                            func (Tukey) TransformComplex

                                                            func (t Tukey) TransformComplex(seq []complex128) []complex128

                                                              TransformComplex applies the Tukey transformation to seq in place, using the value of the receiver as the Alpha parameter, and returning the result

                                                              type Values

                                                              type Values []float64

                                                                Values is an arbitrary real window function.

                                                                Example
                                                                Output:
                                                                
                                                                
                                                                dst: [0.000000 0.164595 0.324699 0.475947 0.614213 0.735724 0.837166 0.915773 0.969400 0.996584 0.996584 0.969400 0.915773 0.837166 0.735724 0.614213 0.475947 0.324699 0.164595 0.000000]
                                                                

                                                                func NewValues

                                                                func NewValues(window func([]float64) []float64, n int) Values

                                                                  NewValues returns a Values of length n with weights corresponding to the provided window function.

                                                                  func (Values) Transform

                                                                  func (v Values) Transform(seq []float64) []float64

                                                                    Transform applies the weights in the receiver to seq in place, returning the result. If v is nil, Transform is a no-op, otherwise the length of v must match the length of seq.

                                                                    func (Values) TransformComplex

                                                                    func (v Values) TransformComplex(seq []complex128) []complex128

                                                                      TransformComplex applies the weights in the receiver to seq in place, returning the result. If v is nil, TransformComplex is a no-op, otherwise the length of v must match the length of seq.

                                                                      func (Values) TransformComplexTo

                                                                      func (v Values) TransformComplexTo(dst, src []complex128)

                                                                        TransformComplexTo applies the weights in the receiver to src placing the result in dst. If v is nil, TransformComplexTo is a no-op, otherwise the length of v must match the length of src and dst.

                                                                        func (Values) TransformTo

                                                                        func (v Values) TransformTo(dst, src []float64)

                                                                          TransformTo applies the weights in the receiver to src placing the result in dst. If v is nil, TransformTo is a no-op, otherwise the length of v must match the length of src and dst.

                                                                          Example (Gabor)
                                                                          Output:
                                                                          
                                                                          
                                                                          FFT([0.135335 1.601475 0.800737 0.000000 0.000000 0.000000 0.000000 0.000000])
                                                                          FFT([0.270671 0.800737 0.000000 -0.135335 0.000000 0.000000 0.000000 0.000000])
                                                                          FFT([0.135335 0.000000 -0.800737 -0.135335 0.000000 0.000000 0.000000 0.000000])
                                                                          FFT([0.000000 -0.800737 -0.800737 -0.270671 0.000000 0.000000 0.000000 0.000000])
                                                                          FFT([-0.135335 -0.800737 -1.601475 -0.270671 0.000000 0.000000 0.000000 0.000000])
                                                                          FFT([-0.135335 -1.601475 -1.601475 -0.135335 0.000000 0.000000 0.000000 0.000000])
                                                                          FFT([-0.270671 -1.601475 -0.800737 -0.135335 0.000000 0.000000 0.000000 0.000000])
                                                                          FFT([-0.270671 -0.800737 -0.800737 0.000000 0.000000 0.000000 0.000000 0.000000])
                                                                          FFT([-0.135335 -0.800737 0.000000 0.135335 0.000000 0.000000 0.000000 0.000000])
                                                                          FFT([-0.135335 0.000000 0.800737 0.135335 0.000000 0.000000 0.000000 0.000000])
                                                                          FFT([0.000000 0.800737 0.800737 0.270671 0.000000 0.000000 0.000000 0.000000])
                                                                          FFT([0.135335 0.800737 1.601475 0.135335 0.000000 0.000000 0.000000 0.000000])
                                                                          FFT([0.135335 1.601475 0.800737 0.000000 0.000000 0.000000 0.000000 0.000000])
                                                                          FFT([0.270671 0.800737 0.000000 -0.135335 0.000000 0.000000 0.000000 0.000000])
                                                                          FFT([0.135335 0.000000 -0.800737 -0.270671 0.000000 0.000000 0.000000 0.000000])
                                                                          FFT([0.000000 -0.800737 -1.601475 -0.135335 0.000000 0.000000 0.000000 0.000000])