Provided by: libmath-matrix-maybegsl-perl_0.007-2_all
NAME
Math::Matrix::MaybeGSL - Uniform use of Math::MatrixReal and Math::GSL::Matrix.
VERSION
version 0.007
SYNOPSIS
use Math::Matrix::MaybeGSL; my $matrix = Matrix->new(3, 4); # puts first position of matrix with value 10 $matrix->assign(1, 1, 10); # gets last position of matrix (should hold 0) my $l = $matrix->element(3, 4);
DESCRIPTION
This module interfaces with "Math::GSL::Matrix" or, if that is not available, "Math::MatrixReal". The idea behind this module is to allow the development of tools that use matrices that will work in pure Perl (using "Math::MatrixReal") or with extra efficiency using "Math::GSL::Matrix". Given the two modules API is quite distinct, this module defines its own API, stealing method names from both these modules.
METHODS
"Matrix" This is a simple function that returns this package name: "Math::Matrix::MaybeGSL". It allows a simple interface as shown below for the constructors. "isGSL" Returns a true value is running over Math::GSL backend. if (Matrix->isGSL) { ... } "new" Construct a new matrix object. Receives as arguments the number of rows and columns of the matrix being created. my $matrix = Matrix->new(20, 30); Yes, although the module name is "Math::Matrix::MaybeGSL", the "Matrix" subroutine will make it easier to use (shorter name). "new_from_cols" Receives a nested list with the matrix elements, one column at a time: my $matrix = Matrix->new_from_cols( [[1, 2], [3, 4]]); returns [ 1 3 ] [ 2 4 ] "new_from_rows" Receives a nested list with the matrix elements, one row at a time: my $matrix = Matrix->new_from_rows( [[1, 2], [3, 4]]); returns [ 1 2 ] [ 3 4 ] "dim" Returns a list (a pair) with the number of lines and columns of the matrix. my ($rows, $columns) = $matrix->dim(); "assign" Sets a value in a specific position. Note that indexes start at 1 unlike Perl and some other programming languages. # sets the first element of the matrix to 10. $matrix->assign(1, 1, 10); "element" Retrieves a value from a specific position of the matrix. Note that indexes start at 1 unlike Perl and some other programming languages. # retrieves the second element of the first row my $val = $matrix->element(1, 2); "each" Apply a specific function to every element of the matrix, returning a new one. # square all elements $squared_matrix = $matrix->each( { shift ** 2 } ); "hconcat" Concatenates two matrices horizontally. Note they must have the same number of rows. $C = $a->hconcat($b); if A = [ 1 2 ] and B = [ 5 6 ] then C = [ 1 2 5 6 ] [ 3 4 ] [ 7 8 ] [ 3 4 7 8 ] "vconcat" Concatenates two matrices horizontally. Note they must have the same number of rows. $C = $a->vconcat($b); if A = [ 1 2 ] and B = [ 5 6 ] then C = [ 1 2 ] [ 3 4 ] [ 7 8 ] [ 3 4 ] [ 5 6 ] [ 7 8 ] "max" Returns the maximum value of the matrix. In scalar context the position is also returned. For vectors (matrices whose number of rows or columns is 1) only a position value is returned. $max = $matrix->max(); ($max, $row, $col) = $matrix->max(); "min" Returns the minimum value of the matrix. In scalar context the position is also returned. For vectors (matrices whose number of rows or columns is 1) only a position value is returned. $min = $matrix->min(); ($min, $row, $col) = $matrix->min(); "det" Returns the determinant of the matrix, without going through the rigamarole of computing a LR decomposition. "as_list" Get the contents of a matrix instance as a Perl list. "write" Given a matrix and a filename, writes that matrix to the file. Note that if the file exists it will be overwritten. Also, files written by Math::GSL will not be compatible with files written by Math::MatrixReal nor vice-versa. $matrix->write("my_matrix.dat"); "read" Reads a matrix written by the "write" method. Note that it will only read matrices written by the same back-end that is being used for reading. my $matrix = Matrix->load("my_matrix.dat");
OVERLOAD
For now only the matrix multiplication is overloaded, in the usual operator, "*". Take attention that matrix multiplication only works if the matrix dimensions are compatible. $m = $a * $b;
BUGS
At this initial stage of this module, only the methods that I am really needing for my depending applications are implemented. Therefore, it might not include the method that you were looking for. Nevertheless, send me an e-mail (or open an issue on GitHub) and I'll be happy to include it (given the two modules support it).
SEE ALSO
Check "Math::MatrixReal" and "Math::GSL::Matrix" documentation.
AUTHOR
Alberto Simões <ambs@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2014 by Alberto Simões. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.