窗函数 (winfunc)
信号处理窗函数,用于 FFT 频谱分析时减少频谱泄漏。支持多种常用窗函数。
API
void winfunc_rectangular(float * taps, int n);
void winfunc_triangular(float * taps, int n);
void winfunc_flattop(float * taps, int n);
void winfunc_welch(float * taps, int n);
void winfunc_hanning(float * taps, int n);
void winfunc_hamming(float * taps, int n);
void winfunc_blackman(float * taps, int n);
void winfunc_kaiser(float * taps, int n, float beta);
winfunc_rectangular— 矩形窗winfunc_triangular— 三角窗winfunc_flattop— 平顶窗winfunc_welch— Welch 窗winfunc_hanning— Hanning 窗winfunc_hamming— Hamming 窗winfunc_blackman— Blackman 窗winfunc_kaiser— Kaiser 窗,beta控制旁瓣衰减
使用示例
int n = 1024;
float window[n];
float signal[n];
float windowed[n];
winfunc_hanning(window, n);
for (int i = 0; i < n; i++)
windowed[i] = signal[i] * window[i];
struct fft_t * fft = fft_new(10);
struct complex_t out[n];
fft_process_forward(fft, out, windowed);
fft_free(fft);