svd#
- class brainunit.lax.svd(x, *, full_matrices=True, compute_uv=True, subset_by_index=None, algorithm=None)#
Singular value decomposition.
Compute the SVD of a matrix. When
compute_uvisTrue, return(u, s, vh); otherwise return only the singular valuess.- Parameters:
x (saiunit.Quantity |
Array|ndarray|bool|number|bool|int|float|complex) – A batch of matrices with shape[..., m, n].full_matrices (
bool) – IfTrue, compute full-sizeUandVh. Default isTrue.compute_uv (
bool) – IfTrue, computeUandVhin addition toS. Default isTrue.subset_by_index (
tuple[int,int] |None) – Optional(start, end)range of singular-value indices. Default isNone.algorithm (
SvdAlgorithm|None) – The SVD algorithm to use. Default isNone.
- Return type:
saiunit.Quantity |
Array|ndarray|bool|number|bool|int|float|complex|tuple[Array, saiunit.Quantity |Array,Array]- Returns:
u (jax.Array) – Left singular vectors (unitless). Only returned when
compute_uv=True.s (jax.Array or Quantity) – Singular values. If
xhas a unit,spreserves that unit.vh (jax.Array) – Right singular vectors (unitless). Only returned when
compute_uv=True.
Examples
>>> import jax.numpy as jnp >>> import saiunit as u >>> import saiunit.lax as sulax >>> A = jnp.array([[1.0, 2.0], [3.0, 4.0]]) * u.meter >>> u, s, vh = sulax.svd(A) >>> u.get_unit(s) == u.meter True