#matrix #matrix-vector

matrix_operations

A library to perform matrix operations

6 releases

0.1.5 Apr 4, 2023
0.1.4 Apr 1, 2023
0.1.3 Mar 25, 2023

#1337 in Math


Used in matrix_operations_cuda

MIT license

135KB
1K SLoC

Matrix Operations

Crates.io Docs.rs

Matrix_Operations is a Rust crate for performing various matrix operations. It provides a set of functions for performing common matrix operations.

Installation

Add the following to your Cargo.toml file:

[dependencies]
matrix_operations = "0.1.5"

Usage

This crate provides a wide range of operations that can be performed on matrices. Here are some examples of common operations:

use matrix_operations::matrix;
use matrix_operations::operations::transpose_matrix;

let matrix1 = matrix![[1, 2, 3],
[4, 5, 6]];

let matrix2 = matrix![[7, 8, 9],
[10, 11, 12]];

let mut matrix3 = matrix1.clone() + matrix2.clone() * 2;
assert_eq!(matrix3, matrix![[15, 18, 21], [24, 27, 30]]);

matrix3 -= 1;
assert_eq!(matrix3, matrix![[14, 17, 20], [23, 26, 29]]);

matrix3 /= 2;
assert_eq!(matrix3, matrix![[7, 8, 10], [11, 13, 14]]);

matrix3 -= matrix1;
assert_eq!(matrix3, matrix![[6, 6, 7], [7, 8, 8]]);

matrix3 = transpose_matrix(&matrix3);
assert_eq!(matrix3, matrix![[6, 7], [6, 8], [7, 8]]);

matrix3 *= matrix2;
assert_eq!(matrix3, matrix![[112, 125, 138], [122, 136, 150], [129, 144, 159]]);

This crate also provides functionality to load and save matrices to a file:

use matrix_operations::csv::{load_matrix_from_csv, write_matrix_to_csv};
use matrix_operations::matrix;

let matrix1 = matrix![[1, 2, 3],
                      [4, 5, 6]];

write_matrix_to_csv(&matrix1, "resources/matrix.csv", ",").unwrap();

let matrix2 = load_matrix_from_csv("resources/matrix.csv", ",").unwrap();

assert_eq!(matrix1, matrix2);

Features

  • Create a matrix
  • Transpose a matrix
  • Multiply / Add / Subtract two matrices
  • Multiply / Divide / Add / Subtract a matrix by a scalar
  • Add / Subtract each matrix rows / columns by a distinct value
  • Apply a function to each element of a matrix (like multiplying by a scalar, or adding a constant)
  • Apply a function on each element of two matrices (like multiplying two matrices element by element)
  • Apply a function on each row or column of a matrix
  • Get a matrix as a slice / vector / 2D vector
  • Load / Save a matrix in a file
  • Add / Remove rows / columns
  • Concatenate matrices

No runtime deps