Skip to main content

Matrix

Struct Matrix 

Source
pub struct Matrix {
    pub data: Vec<f64>,
    pub rows: usize,
    pub cols: usize,
}
Expand description

A dense row-major matrix of f64 values.

Data is stored in a flat Vec<f64> of length rows * cols.

§Examples

use pc_rl_core::matrix::Matrix;

let m = Matrix::zeros(2, 3);
assert_eq!(m.rows, 2);
assert_eq!(m.cols, 3);

Fields§

§data: Vec<f64>

Flat row-major storage.

§rows: usize

Number of rows.

§cols: usize

Number of columns.

Implementations§

Source§

impl Matrix

Source

pub fn zeros(rows: usize, cols: usize) -> Self

Creates a matrix filled with zeros.

§Arguments
  • rows - Number of rows.
  • cols - Number of columns.
§Returns

A Matrix with all elements set to 0.0.

Source

pub fn xavier(rows: usize, cols: usize, rng: &mut impl Rng) -> Self

Creates a matrix with Xavier-uniform initialization.

Elements are drawn uniformly from [-limit, limit] where limit = sqrt(6.0 / (rows + cols)).

§Arguments
  • rows - Number of rows.
  • cols - Number of columns.
  • rng - Mutable reference to a random number generator.
§Returns

A Matrix with Xavier-initialized values.

Source

pub fn get(&self, row: usize, col: usize) -> f64

Returns the element at (row, col).

Defaults to 0.0 if indices are out of bounds.

§Arguments
  • row - Row index.
  • col - Column index.
Source

pub fn set(&mut self, row: usize, col: usize, val: f64)

Sets the element at (row, col) to val.

Does nothing if indices are out of bounds.

§Arguments
  • row - Row index.
  • col - Column index.
  • val - Value to set.
Source

pub fn transpose(&self) -> Self

Returns the transpose of this matrix.

§Returns

A new Matrix with rows and columns swapped.

Source

pub fn mul_vec(&self, v: &[f64]) -> Vec<f64>

Multiplies this matrix by a column vector.

§Arguments
  • v - Input vector of length self.cols.
§Returns

A vector of length self.rows.

§Panics

Panics with “dimension” if v.len() != self.cols.

Source

pub fn outer(a: &[f64], b: &[f64]) -> Self

Computes the outer product of two vectors.

§Arguments
  • a - First vector (determines rows).
  • b - Second vector (determines cols).
§Returns

A Matrix of shape (a.len(), b.len()). Returns a 0x0 matrix if either vector is empty.

Source

pub fn scale_add(&mut self, other: &Matrix, scale: f64)

Adds scale * other element-wise and clamps to [-WEIGHT_CLIP, WEIGHT_CLIP].

§Arguments
  • other - Matrix to add (must have same dimensions).
  • scale - Scalar multiplier for other.
§Panics

Panics if dimensions do not match.

Trait Implementations§

Source§

impl Clone for Matrix

Source§

fn clone(&self) -> Matrix

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Matrix

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Matrix

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for Matrix

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,