use crate::ValidationError;
use nalgebra::{DMatrix, DVector};
pub trait DMatrixExt {
fn apply_column_weights(&self, vector: &DVector<f64>) -> Result<DMatrix<f64>, ValidationError>;
}
impl DMatrixExt for DMatrix<f64> {
fn apply_column_weights(
&self,
weights: &DVector<f64>,
) -> Result<DMatrix<f64>, ValidationError> {
if weights.len() != self.ncols() {
return Err(ValidationError::DimensionMismatch);
}
let mut result = self.clone();
for (m, _) in self.column_iter().enumerate() {
result.column_mut(m).scale_mut(weights[m]);
}
Ok(result)
}
}