Struct rusty_machine::prelude::MatrixSlice []

pub struct MatrixSlice<'a, T> where T: 'a { /* fields omitted */ }
[]

A MatrixSlice

This struct provides a slice into a matrix.

The struct contains the upper left point of the slice and the width and height of the slice.

Methods

impl<'a, T> MatrixSlice<'a, T>

[]

Produce a MatrixSlice from a Matrix

Examples

use rulinalg::matrix::{Matrix, MatrixSlice};

let a = Matrix::new(3,3, (0..9).collect::<Vec<usize>>());
let slice = MatrixSlice::from_matrix(&a, [1,1], 2, 2);

[]

Creates a MatrixSlice from raw parts.

Examples

use rulinalg::matrix::MatrixSlice;

let mut a = vec![4.0; 16];

unsafe {
    // Create a matrix slice with 3 rows, and 3 cols
    // The row stride of 4 specifies the distance between the start of each row in the data.
    let b = MatrixSlice::from_raw_parts(a.as_ptr(), 3, 3, 4);
}

Safety

The pointer must be followed by a contiguous slice of data larger than row_stride * rows. If not then other operations will produce undefined behaviour.

Additionally cols should be less than the row_stride. It is possible to use this function safely whilst violating this condition. So long as max(cols, row_stride) * rows is less than the data size.

[]

Produce a MatrixSlice from an existing MatrixSlice.

This function will be deprecated. Prefer using BaseMatrix::sub_slice.

Examples

use rulinalg::matrix::{Matrix, MatrixSlice};

let a = Matrix::new(3,3, (0..9).collect::<Vec<usize>>());
let slice = MatrixSlice::from_matrix(&a, [1,1], 2, 2);
let new_slice = slice.reslice([0,0], 1, 1);

Trait Implementations

impl<'a, T> Metric<T> for MatrixSlice<'a, T> where T: Float

[]

Compute euclidean norm for matrix.

Examples

use rulinalg::matrix::{Matrix, MatrixSlice};
use rulinalg::Metric;

let a = Matrix::new(2,1, vec![3.0,4.0]);
let b = MatrixSlice::from_matrix(&a, [0,0], 2, 1);
let c = b.norm();

assert_eq!(c, 5.0);

impl<'a, T> BaseMatrix<T> for MatrixSlice<'a, T>

[]

Rows in the matrix.

[]

Columns in the matrix.

[]

Row stride in the matrix.

[]

Top left index of the matrix.

[]

Returns true if the matrix contais no elements

[]

Returns a MatrixSlice over the whole matrix. Read more

[]

Get a reference to a point in the matrix without bounds checking.

[]

Returns the row of a matrix at the given index. None if the index is out of bounds. Read more

[]

Returns the row of a matrix at the given index without doing unbounds checking Read more

[]

Returns an iterator over the matrix data. Read more

[]

Iterate over the rows of the matrix. Read more

[]

Iterate over diagonal entries Read more

[]

The sum of the rows of the matrix. Read more

[]

The sum of the columns of the matrix. Read more

[]

The sum of all elements in the matrix Read more

[]

Convert the matrix struct into a owned Matrix.

[]

Select rows from matrix Read more

[]

Select columns from matrix Read more

[]

The elementwise product of two matrices. Read more

[]

The elementwise division of two matrices. Read more

[]

Select block matrix from matrix Read more

[]

Horizontally concatenates two matrices. With self on the left. Read more

[]

Vertically concatenates two matrices. With self on top. Read more

[]

Extract the diagonal of the matrix Read more

[]

Tranposes the given matrix Read more

[]

Checks if matrix is diagonal. Read more

[]

Solves an upper triangular linear system. Read more

[]

Solves a lower triangular linear system. Read more

[]

Split the matrix at the specified axis returning two MatrixSlices. Read more

[]

Produce a MatrixSlice from an existing matrix. Read more

impl<'a, T> Sub<T> for MatrixSlice<'a, T> where T: Copy + Sub<T, Output=T>

[]

Scalar subtraction with matrix slice.

impl<'a, 'b, T> Sub<&'b T> for MatrixSlice<'a, T> where T: Copy + Sub<T, Output=T>

[]

Scalar subtraction with matrix slice.

impl<'a, 'b, T> Sub<T> for &'b MatrixSlice<'a, T> where T: Copy + Sub<T, Output=T>

[]

Scalar subtraction with matrix slice.

impl<'a, 'b, 'c, T> Sub<&'c T> for &'b MatrixSlice<'a, T> where T: Copy + Sub<T, Output=T>

[]

Scalar subtraction with matrix slice.

impl<'a, 'b, T> Sub<MatrixSlice<'b, T>> for MatrixSlice<'a, T> where T: Copy + Sub<T, Output=T>

[]

Performs elementwise subtraction between the slices.

impl<'a, 'b, 'c, T> Sub<MatrixSlice<'b, T>> for &'c MatrixSlice<'a, T> where T: Copy + Sub<T, Output=T>

[]

Performs elementwise subtraction between the slices.

impl<'a, 'b, 'c, T> Sub<&'c MatrixSlice<'b, T>> for MatrixSlice<'a, T> where T: Copy + Sub<T, Output=T>

[]

Performs elementwise subtraction between the slices.

impl<'a, 'b, 'c, 'd, T> Sub<&'d MatrixSlice<'b, T>> for &'c MatrixSlice<'a, T> where T: Copy + Sub<T, Output=T>

[]

Performs elementwise subtraction between the slices.

impl<'a, 'b, T> Sub<MatrixSliceMut<'b, T>> for MatrixSlice<'a, T> where T: Copy + Sub<T, Output=T>

[]

Performs elementwise subtraction between the slices.

impl<'a, 'b, 'c, T> Sub<MatrixSliceMut<'b, T>> for &'c MatrixSlice<'a, T> where T: Copy + Sub<T, Output=T>

[]

Performs elementwise subtraction between the slices.

impl<'a, 'b, 'c, T> Sub<&'c MatrixSliceMut<'b, T>> for MatrixSlice<'a, T> where T: Copy + Sub<T, Output=T>

[]

Performs elementwise subtraction between the slices.

impl<'a, 'b, 'c, 'd, T> Sub<&'d MatrixSliceMut<'b, T>> for &'c MatrixSlice<'a, T> where T: Copy + Sub<T, Output=T>

[]

Performs elementwise subtraction between the slices.

impl<'a, T> Sub<Matrix<T>> for MatrixSlice<'a, T> where T: Copy + Sub<T, Output=T>

[]

Performs elementwise subtraction between Matrix and MatrixSlice.

impl<'a, 'b, T> Sub<Matrix<T>> for &'b MatrixSlice<'a, T> where T: Copy + Sub<T, Output=T>

[]

Performs elementwise subtraction between Matrix and MatrixSlice.

impl<'a, 'b, T> Sub<&'b Matrix<T>> for MatrixSlice<'a, T> where T: Copy + Sub<T, Output=T>

[]

Performs elementwise subtraction between Matrix and MatrixSlice.

impl<'a, 'b, 'c, T> Sub<&'c Matrix<T>> for &'b MatrixSlice<'a, T> where T: Copy + Sub<T, Output=T>

[]

Performs elementwise subtraction between Matrix and MatrixSlice.

impl<'a, T> Clone for MatrixSlice<'a, T> where T: 'a + Clone

[]

Returns a copy of the value. Read more

[]

Performs copy-assignment from source. Read more

impl<'a, T> Mul<T> for MatrixSlice<'a, T> where T: Copy + Mul<T, Output=T>

[]

Scalar multiplication with matrix slice.

The resulting type after applying the * operator

[]

The method for the * operator

impl<'a, 'b, T> Mul<&'b T> for MatrixSlice<'a, T> where T: Copy + Mul<T, Output=T>

[]

Scalar multiplication with matrix slice.

The resulting type after applying the * operator

[]

The method for the * operator

impl<'a, 'b, T> Mul<T> for &'b MatrixSlice<'a, T> where T: Copy + Mul<T, Output=T>

[]

Scalar multiplication with matrix slice.

The resulting type after applying the * operator

[]

The method for the * operator

impl<'a, 'b, 'c, T> Mul<&'c T> for &'b MatrixSlice<'a, T> where T: Copy + Mul<T, Output=T>

[]

Scalar multiplication with matrix slice.

The resulting type after applying the * operator

[]

The method for the * operator

impl<'a, T> Mul<Matrix<T>> for MatrixSlice<'a, T> where T: Copy + Zero<Output=T> + Add<T> + Mul<T, Output=T> + Any

[]

Multiplies two matrices together.

The resulting type after applying the * operator

[]

The method for the * operator

impl<'a, 'b, T> Mul<&'b Matrix<T>> for MatrixSlice<'a, T> where T: Copy + Zero<Output=T> + Add<T> + Mul<T, Output=T> + Any

[]

Multiplies two matrices together.

The resulting type after applying the * operator

[]

The method for the * operator

impl<'a, 'b, T> Mul<Matrix<T>> for &'b MatrixSlice<'a, T> where T: Copy + Zero<Output=T> + Add<T> + Mul<T, Output=T> + Any

[]

Multiplies two matrices together.

The resulting type after applying the * operator

[]

The method for the * operator

impl<'a, 'b, 'c, T> Mul<&'c Matrix<T>> for &'b MatrixSlice<'a, T> where T: Copy + Zero<Output=T> + Add<T> + Mul<T, Output=T> + Any

[]

Multiplies two matrices together.

The resulting type after applying the * operator

[]

The method for the * operator

impl<'a, 'b, T> Mul<MatrixSlice<'b, T>> for MatrixSlice<'a, T> where T: Copy + Zero<Output=T> + Add<T> + Mul<T, Output=T> + Any

[]

Multiplies two matrices together.

The resulting type after applying the * operator

[]

The method for the * operator

impl<'a, 'b, 'c, T> Mul<&'c MatrixSlice<'b, T>> for MatrixSlice<'a, T> where T: Copy + Zero<Output=T> + Add<T> + Mul<T, Output=T> + Any

[]

Multiplies two matrices together.

The resulting type after applying the * operator

[]

The method for the * operator

impl<'a, 'b, 'c, T> Mul<MatrixSlice<'b, T>> for &'c MatrixSlice<'a, T> where T: Copy + Zero<Output=T> + Add<T> + Mul<T, Output=T> + Any

[]

Multiplies two matrices together.

The resulting type after applying the * operator

[]

The method for the * operator

impl<'a, 'b, 'c, 'd, T> Mul<&'d MatrixSlice<'b, T>> for &'c MatrixSlice<'a, T> where T: Copy + Zero<Output=T> + Add<T> + Mul<T, Output=T> + Any

[]

Multiplies two matrices together.

The resulting type after applying the * operator

[]

The method for the * operator

impl<'a, 'b, T> Mul<MatrixSliceMut<'b, T>> for MatrixSlice<'a, T> where T: Copy + Zero<Output=T> + Add<T> + Mul<T, Output=T> + Any

[]

Multiplies two matrices together.

The resulting type after applying the * operator

[]

The method for the * operator

impl<'a, 'b, 'c, T> Mul<&'c MatrixSliceMut<'b, T>> for MatrixSlice<'a, T> where T: Copy + Zero<Output=T> + Add<T> + Mul<T, Output=T> + Any

[]

Multiplies two matrices together.

The resulting type after applying the * operator

[]

The method for the * operator

impl<'a, 'b, 'c, T> Mul<MatrixSliceMut<'b, T>> for &'c MatrixSlice<'a, T> where T: Copy + Zero<Output=T> + Add<T> + Mul<T, Output=T> + Any

[]

Multiplies two matrices together.

The resulting type after applying the * operator

[]

The method for the * operator

impl<'a, 'b, 'c, 'd, T> Mul<&'d MatrixSliceMut<'b, T>> for &'c MatrixSlice<'a, T> where T: Copy + Zero<Output=T> + Add<T> + Mul<T, Output=T> + Any

[]

Multiplies two matrices together.

The resulting type after applying the * operator

[]

The method for the * operator

impl<'a, T> Copy for MatrixSlice<'a, T> where T: Copy + 'a

impl<'a, T> Index<[usize; 2]> for MatrixSlice<'a, T>

[]

Indexes matrix slice. Takes row index first then column.

impl<'a, T> Add<T> for MatrixSlice<'a, T> where T: Copy + Add<T, Output=T>

[]

Scalar addition with matrix slice.

The resulting type after applying the + operator

[]

The method for the + operator

impl<'a, 'b, T> Add<&'b T> for MatrixSlice<'a, T> where T: Copy + Add<T, Output=T>

[]

Scalar addition with matrix slice.

The resulting type after applying the + operator

[]

The method for the + operator

impl<'a, 'b, T> Add<T> for &'b MatrixSlice<'a, T> where T: Copy + Add<T, Output=T>

[]

Scalar addition with matrix slice.

The resulting type after applying the + operator

[]

The method for the + operator

impl<'a, 'b, 'c, T> Add<&'c T> for &'b MatrixSlice<'a, T> where T: Copy + Add<T, Output=T>

[]

Scalar addition with matrix slice.

The resulting type after applying the + operator

[]

The method for the + operator

impl<'a, 'b, T> Add<MatrixSlice<'b, T>> for MatrixSlice<'a, T> where T: Copy + Add<T, Output=T>

[]

Performs elementwise addition between the slices.

The resulting type after applying the + operator

[]

The method for the + operator

impl<'a, 'b, 'c, T> Add<MatrixSlice<'b, T>> for &'c MatrixSlice<'a, T> where T: Copy + Add<T, Output=T>

[]

Performs elementwise addition between the slices.

The resulting type after applying the + operator

[]

The method for the + operator

impl<'a, 'b, 'c, T> Add<&'c MatrixSlice<'b, T>> for MatrixSlice<'a, T> where T: Copy + Add<T, Output=T>

[]

Performs elementwise addition between the slices.

The resulting type after applying the + operator

[]

The method for the + operator

impl<'a, 'b, 'c, 'd, T> Add<&'d MatrixSlice<'b, T>> for &'c MatrixSlice<'a, T> where T: Copy + Add<T, Output=T>

[]

Performs elementwise addition between the slices.

The resulting type after applying the + operator

[]

The method for the + operator

impl<'a, 'b, T> Add<MatrixSliceMut<'b, T>> for MatrixSlice<'a, T> where T: Copy + Add<T, Output=T>

[]

Performs elementwise addition between the slices.

The resulting type after applying the + operator

[]

The method for the + operator

impl<'a, 'b, 'c, T> Add<MatrixSliceMut<'b, T>> for &'c MatrixSlice<'a, T> where T: Copy + Add<T, Output=T>

[]

Performs elementwise addition between the slices.

The resulting type after applying the + operator

[]

The method for the + operator

impl<'a, 'b, 'c, T> Add<&'c MatrixSliceMut<'b, T>> for MatrixSlice<'a, T> where T: Copy + Add<T, Output=T>

[]

Performs elementwise addition between the slices.

The resulting type after applying the + operator

[]

The method for the + operator

impl<'a, 'b, 'c, 'd, T> Add<&'d MatrixSliceMut<'b, T>> for &'c MatrixSlice<'a, T> where T: Copy + Add<T, Output=T>

[]

Performs elementwise addition between the slices.

The resulting type after applying the + operator

[]

The method for the + operator

impl<'a, T> Add<Matrix<T>> for MatrixSlice<'a, T> where T: Copy + Add<T, Output=T>

[]

Performs elementwise addition between Matrix and MatrixSlice.

The resulting type after applying the + operator

[]

The method for the + operator

impl<'a, 'b, T> Add<Matrix<T>> for &'b MatrixSlice<'a, T> where T: Copy + Add<T, Output=T>

[]

Performs elementwise addition between Matrix and MatrixSlice.

The resulting type after applying the + operator

[]

The method for the + operator

impl<'a, 'b, T> Add<&'b Matrix<T>> for MatrixSlice<'a, T> where T: Copy + Add<T, Output=T>

[]

Performs elementwise addition between Matrix and MatrixSlice.

The resulting type after applying the + operator

[]

The method for the + operator

impl<'a, 'b, 'c, T> Add<&'c Matrix<T>> for &'b MatrixSlice<'a, T> where T: Copy + Add<T, Output=T>

[]

Performs elementwise addition between Matrix and MatrixSlice.

The resulting type after applying the + operator

[]

The method for the + operator

impl<'a, T> Debug for MatrixSlice<'a, T> where T: 'a + Debug

[]

Formats the value using the given formatter.

impl<'a, T> IntoIterator for MatrixSlice<'a, T>

impl<'a, T> IntoIterator for &'a MatrixSlice<'a, T>

impl<'a, T> IntoIterator for &'a mut MatrixSlice<'a, T>

impl<'a, T> Div<T> for MatrixSlice<'a, T> where T: Copy + Div<T, Output=T>

[]

Scalar division with matrix slice.

impl<'a, 'b, T> Div<&'b T> for MatrixSlice<'a, T> where T: Copy + Div<T, Output=T>

[]

Scalar division with matrix slice.

impl<'a, 'b, T> Div<T> for &'b MatrixSlice<'a, T> where T: Copy + Div<T, Output=T>

[]

Scalar division with matrix slice.

impl<'a, 'b, 'c, T> Div<&'c T> for &'b MatrixSlice<'a, T> where T: Copy + Div<T, Output=T>

[]

Scalar division with matrix slice.

impl<'a, T> Neg for MatrixSlice<'a, T> where T: Neg<Output=T> + Copy

[]

Gets negative of matrix slice.

impl<'a, 'b, T> Neg for &'b MatrixSlice<'a, T> where T: Neg<Output=T> + Copy

[]

Gets negative of matrix slice.