mirror of
https://github.com/Magnus167/rustframe.git
synced 2025-08-20 04:19:59 +00:00
Add methods to create zero, one, and filled matrices for f64 type
This commit is contained in:
parent
11330e464b
commit
04637ef4d0
@ -310,6 +310,26 @@ impl<T: Clone> Matrix<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Matrix<f64> {
|
||||||
|
/// Creates a new matrix filled with a specific value of the specified size.
|
||||||
|
pub fn filled(rows: usize, cols: usize, value: f64) -> Self {
|
||||||
|
Matrix {
|
||||||
|
rows,
|
||||||
|
cols,
|
||||||
|
data: vec![value; rows * cols], // Fill with the specified value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// Creates a new matrix filled with zeros of the specified size.
|
||||||
|
pub fn zeros(rows: usize, cols: usize) -> Self {
|
||||||
|
Matrix::filled(rows, cols, 0.0)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Creates a new matrix filled with ones of the specified size.
|
||||||
|
pub fn ones(rows: usize, cols: usize) -> Self {
|
||||||
|
Matrix::filled(rows, cols, 1.0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<T> Index<(usize, usize)> for Matrix<T> {
|
impl<T> Index<(usize, usize)> for Matrix<T> {
|
||||||
type Output = T;
|
type Output = T;
|
||||||
|
|
||||||
@ -1794,4 +1814,25 @@ mod tests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_matrix_zeros_ones_filled() {
|
||||||
|
// Test zeros
|
||||||
|
let m = Matrix::<f64>::zeros(2, 3);
|
||||||
|
assert_eq!(m.rows(), 2);
|
||||||
|
assert_eq!(m.cols(), 3);
|
||||||
|
assert_eq!(m.data(), &[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]);
|
||||||
|
|
||||||
|
// Test ones
|
||||||
|
let m = Matrix::<f64>::ones(3, 2);
|
||||||
|
assert_eq!(m.rows(), 3);
|
||||||
|
assert_eq!(m.cols(), 2);
|
||||||
|
assert_eq!(m.data(), &[1.0, 1.0, 1.0, 1.0, 1.0, 1.0]);
|
||||||
|
|
||||||
|
// Test filled
|
||||||
|
let m = Matrix::<f64>::filled(2, 2, 42.5);
|
||||||
|
assert_eq!(m.rows(), 2);
|
||||||
|
assert_eq!(m.cols(), 2);
|
||||||
|
assert_eq!(m.data(), &[42.5, 42.5, 42.5, 42.5]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user