| Crates.io | hann-rs |
| lib.rs | hann-rs |
| version | 0.1.0 |
| created_at | 2023-04-27 21:11:37.466642+00 |
| updated_at | 2023-04-27 21:11:37.466642+00 |
| description | Blazingly fast Rust Hann Window |
| homepage | |
| repository | https://github.com/F0rty-Tw0/hann-rs |
| max_upload_size | |
| id | 850913 |
| size | 70,351 |
This crate provides functions for computing the Hann window, a function used to taper the edges of a signal window to reduce spectral leakage. The Hann window is defined by the formula w(n) = 0.5 - 0.5 * cos(2π * n / (N - 1)), where n is the index of the current sample and N is the length of the window.

A lookup table for pre-computed Hann windows is provided for common window lengths. This improves performance for repeated calculations with the same window length.
[dependencies]
hann-rs = "0.1.0"
use hann_rs::get_hann_window;
get_hann_window function:let window_length = 1024;
let hann_window = get_hann_window(window_length).expect("Failed to get the Hann window");
If the desired window length is in the lookup table, the precomputed values will be returned. If not, the Hann window values will be computed.
The lookup table, HANN_WINDOW_LOOKUP_TABLE, contains precomputed Hann windows of lengths 256, 512, 1024, 2048, and 4096.
You can add or modify the precomputed window lengths by changing the HANN_WINDOW_PRECOMPUTED_LENGTHS array in the lazy_static block:
const HANN_WINDOW_PRECOMPUTED_LENGTHS: [usize; 5] = [256, 512, 1024, 2048, 4096];
The functions get_hann_window return a Result<Vec<f32>, HannWindowError> type. Errors are returned in the following cases:
To handle these errors, use the Result type as follows:
match get_hann_window(window_length) {
Ok(hann_window) => {
// Use the Hann window
},
Err(error) => {
println!("Error getting the Hann window: {:?}", error);
// or handle the error in your way
},
}
| Metric | Size | Minimum Time | Average Time | Maximum Time |
|---|
get_hann_window | 2000 WL | 7.0252 (µs) | 7.0657 (µs) | 7.1153 (µs) |
get_hann_window | 4000 WL | 13.496 (µs) | 13.596 (µs)| 13.708 (µs) |
get_hann_window (Cached) | 4096 WL | 363.84 (ns) | 369.98 (ns) | 377.30 (ns) |
This module provides functions for computing the sum of squares of a Hann window. It utilizes a lookup table for pre-computed sum of squares for common Hann window lengths, improving performance for repeated calculations with the same window length.
use hann_rs::get_hann_window_sum_squares;
get_hann_window_sum_squares function:let hann_window: Vec<f32> = vec![...]; // The Hann window values
let hann_window_sum_squares = get_hann_window_sum_squares(&hann_window);
If the length of the input hann_window is in the lookup table, the precomputed value will be returned. If not, the sum of squares will be computed using map and sum.
The lookup table, HANN_WINDOW_SUM_OF_SQUARES, contains precomputed sum of squares for Hann windows of lengths 256, 512, 1024, 2048, and 4096.
You can add or modify the precomputed window lengths by changing the HANN_WINDOW_PRECOMPUTED_LENGTHS array in the lazy_static block:
const HANN_WINDOW_PRECOMPUTED_LENGTHS: [usize; 5] = [256, 512, 1024, 2048, 4096];
| Metric | Size | Minimum Time | Average Time | Maximum Time |
|---|
get_hann_window_sum_squares | 2000 WL | 601.14 (ns) | 603.21 (ns) | 605.71 (ns) |
get_hann_window_sum_squares | 4000 WL | 1.1465 (µs)| 1.1520 (µs) | 1.1588 (µs) |
get_hann_window_sum_squares (Cached) | 4096 WL | 10.583 (ns) | 10.628 (ns) | 10.680 (ns) |