macro_rules! feature_vector {
(@default $default:expr) => { ... };
(@default) => { ... };
(
$(#[$meta:meta])*
$vis:vis struct $name:ident {
$( $field:ident $( = $default:expr )? ),+ $(,)?
}
) => { ... };
}Expand description
Generates a named feature vector struct where every field is f64.
The struct converts to &[f64] at zero cost via repr(C) pointer
cast, for passing to adaptive filters (LmsFilterF64, RlsFilterF64),
classifiers (LogisticRegressionF64, OnlineKMeansF64),
and optimizers (AdamF64, AdaGradF64) from the nexus-stats-regression crate.
All fields are pub and f64. Construct via struct literal or
new() (which applies defaults). Mutate fields directly.
ยงExample
use nexus_stats_core::feature_vector;
feature_vector! {
pub struct MarketFeatures {
autocorrelation,
spread = 1.0,
imbalance,
}
}
let f = MarketFeatures { autocorrelation: 0.3, spread: 1.5, imbalance: -0.2 };
assert_eq!(f.as_slice(), &[0.3, 1.5, -0.2]);
assert_eq!(MarketFeatures::DIMENSIONS, 3);