Copyright | 2011 Aleksey Khudyakov 2014 Bryan O'Sullivan |
---|---|
License | BSD3 |
Safe Haskell | None |
Language | Haskell2010 |
Basic matrix operations.
There isn't a widely used matrix package for Haskell yet, so we implement the necessary minimum here.
Synopsis
- data Matrix = Matrix { }
- type Vector = Vector Double
- fromVector :: Int -> Int -> Vector Double -> Matrix
- fromList :: Int -> Int -> [ Double ] -> Matrix
- fromRowLists :: [[ Double ]] -> Matrix
- fromRows :: [ Vector ] -> Matrix
- fromColumns :: [ Vector ] -> Matrix
- toVector :: Matrix -> Vector Double
- toList :: Matrix -> [ Double ]
- toRows :: Matrix -> [ Vector ]
- toColumns :: Matrix -> [ Vector ]
- toRowLists :: Matrix -> [[ Double ]]
- generate :: Int -> Int -> ( Int -> Int -> Double ) -> Matrix
- generateSym :: Int -> ( Int -> Int -> Double ) -> Matrix
- ident :: Int -> Matrix
- diag :: Vector -> Matrix
- dimension :: Matrix -> ( Int , Int )
- center :: Matrix -> Double
- multiply :: Matrix -> Matrix -> Matrix
- multiplyV :: Matrix -> Vector -> Vector
- transpose :: Matrix -> Matrix
- power :: Matrix -> Int -> Matrix
- norm :: Vector -> Double
- column :: Matrix -> Int -> Vector
- row :: Matrix -> Int -> Vector
- map :: ( Double -> Double ) -> Matrix -> Matrix
- for :: Monad m => Int -> Int -> ( Int -> m ()) -> m ()
- unsafeIndex :: Matrix -> Int -> Int -> Double
- hasNaN :: Matrix -> Bool
- bounds :: ( Vector -> Int -> r) -> Matrix -> Int -> Int -> r
- unsafeBounds :: ( Vector -> Int -> r) -> Matrix -> Int -> Int -> r
Data types
Two-dimensional matrix, stored in row-major order.
Conversion from to lists vectors
:: Int |
Number of rows. |
-> Int |
Number of columns. |
-> Vector Double |
Flat list of values, in row-major order. |
-> Matrix |
Convert from a row-major vector.
:: Int |
Number of rows. |
-> Int |
Number of columns. |
-> [ Double ] |
Flat list of values, in row-major order. |
-> Matrix |
Convert from a row-major list.
fromRowLists :: [[ Double ]] -> Matrix Source #
create a matrix from a list of lists, as rows
fromColumns :: [ Vector ] -> Matrix Source #
create a matrix from a list of vectors, as columns
toRowLists :: Matrix -> [[ Double ]] Source #
Convert to a list of lists, as rows
Other
:: Int |
Number of rows |
-> Int |
Number of columns |
-> ( Int -> Int -> Double ) |
Function which takes row and column as argument. |
-> Matrix |
Generate matrix using function
:: Int |
Number of rows and columns |
-> ( Int -> Int -> Double ) |
Function which takes
row
and
column
as argument. It must
be symmetric in arguments:
|
-> Matrix |
Generate symmetric square matrix using function
diag :: Vector -> Matrix Source #
Create a square matrix with given diagonal, other entries default to 0
dimension :: Matrix -> ( Int , Int ) Source #
Return the dimensions of this matrix, as a (row,column) pair.
multiply :: Matrix -> Matrix -> Matrix Source #
Matrix-matrix multiplication. Matrices must be of compatible sizes ( note: not checked ).
power :: Matrix -> Int -> Matrix Source #
Raise matrix to n th power. Power must be positive (/note: not checked).
for :: Monad m => Int -> Int -> ( Int -> m ()) -> m () Source #
Simple for loop. Counts from start to end -1.