rft/window/
nuttall.rs

1use std::f64::consts::PI;
2
3use super::Function;
4use {Precision};
5
6/// https://en.wikipedia.org/wiki/Window_function#Nuttall_window.2C_continuous_first_derivative
7pub struct Nuttall;
8
9const ALPHA0: Precision = 0.355768;
10const ALPHA1: Precision = 0.487396;
11const ALPHA2: Precision = 0.144232;
12const ALPHA3: Precision = 0.012604;
13
14const PI2: Precision = (PI * 2.0) as Precision;
15const PI4: Precision = (PI * 4.0) as Precision;
16const PI6: Precision = (PI * 6.0) as Precision;
17
18impl Function for Nuttall {
19	fn compute(n: Precision, N: Precision) -> Precision {
20		ALPHA0 -
21		ALPHA1 * ((PI2 * n) / (N - 1.0)).cos() +
22		ALPHA2 * ((PI4 * n) / (N - 1.0)).cos() -
23		ALPHA3 * ((PI6 * n) / (N - 1.0)).cos()
24	}
25}