# window-function

2.1.0 • Public • Published

# window-function

Window functions for digital signal processing

# Introduction

Among other uses, window functions help control spectral leakage when doing Fourier Analysis. This collection of window functions is copied directly from Wikipedia. Caveat emptor.

## Usage

Apply window to a signal:

Apply the window functions yourself:

## API

### `require('window-funciton/<type>')(i, total)`

To calculate the value of a window function, pass the sample number `i` and `total` number of samples to one of the window functions listed below, along with any additional parameters it may require. The plots below are calculated from the npm module and plotted with Fourier transform to illustrate the spectral leakage. See the Wikipedia page on window functions for more details.

#### `exactBlackman( i, N )`:

The same as the Blackman window, except a0 = 0.42659 a1 = 0.49656, and a2 = 0.076849. These place zeros at the third and fourth sidelobes.

#### `gaussian( i, N, sigma )`:

Sigma controls the width of the window.

#### `tukey( i, N, alpha )`:

A tapered cosine window. Alpha controls the relative width of the flat section. Alpha=0 is rectangular, alpha=1 is Hann.

### `require('window-function/apply')(array, fn)`

Apply a windowing function to an array, modifies an array in-place.

### `require('window-function/generate')(fn, n)`

Generate an array of `n` samples of the window function `fn`.

## Testing

The tests ensure the window functions aren't returning NaN, but it's hard to have confidence in the accuracy with tests. Instead, I opted to focus on visual testing via plots and Fourier Transforms. To generate the plots, run

It pipes them through matplotlib. Don't worry. I realize the irony.

## Credits

Window function definitions and equation images from Wikipedia: Window Function.

(c) 2015 Ricky Reusser. MIT License

## Package Sidebar

### Install

`npm i window-function`

### Repository

github.com/scijs/window-function

32

2.1.0

MIT

681 kB

84