Math::Lapack::Matrix
version 0.002
Allow the creation of a matrix with all values equal to zero. Its arguments are the number of rows and the number of columns.
my $m = Math::Lapack::Matrix->zeros(10, 20);
Allow the creation of a matrix with all values equal to one. Its arguments are the number of rows and the number of columns.
my $m = Math::Lapack::Matrix->random(5,10);
Allow the creation of a matrix with all values set randomly between 0 and 1. Its arguments are the number of rows and the number of columns.
my $m = Math::Lapack::Matrix->random(15,15);
Allow the creation of a identity matrix. It argument is the size of the matrix.
my $m = Math::Lapack::Matrix->identity(5);
Allow the creation of a new matrix. It argument is a array of values to create the matrix.
$m = Math::Lapack::Matrix->new( [ [1, 2], [3, 4] ] );
Allow free the memory allocated by a matrix.
$m->DESTROY();
Allow get specific element of matrix. Its arguments are the position in row and the position in column.
my $value = $m->get_element(1,2);
($rows, $cols) = $m->shape();
Allow set element in matrix to specific position. Its arguments are the position in row, the position in column and the value to set to that position.
$m->set_element(1,0,10);
Allow get the number of rows of a matrix.
$rows = $m->rows();
Allow get the number of columns of a matrix.
$cols = $m->columns();
Allow get the max value of a matrix
my $max = $a->max();
Allow get the min value of a matrix
my $min = $a->min();
Allow get the mean of values of a matrix
Allow get the standard deviation of the values of matrix
my $std = $a->std_deviation();
Allow normalize every column of matrix by the mean.
my $norm = $a->norm_mean(); This method will return a matrix with dimensions (a->columns, 2). This matrix have in the first row of every column the value max - min and in the second row of every column the mean that every column was normalized.
With this returned matrix you can normalize another matrix with same values of max-min and mean using the option by.
my $new = $b->norm_mean( by => $norm );
Allow normalize every column of matrix by the standard deviation.
my $std = $a->norm_std_deviation();
This method will return a matrix with dimensions (a->columns, 2). This matrix have in the first row of every column the value mean and in the second row of every column the standard deviation that every column was normalized.
With this returned matrix you can normalize another matrix with same values of mean and standard deviation using the option "by".
my $new = $b->norm_mean( by => $std );
Allow make adiction of matrix by a scalar or by another matrix. It argument is a scalar or matrix to add.
$m = $m + $b $m = $m + 5; $m = $m->add($b); $m = $m->add(10);
Allow make subtraction of matrix by a scalar or by another matrix. It argument is a scalar or matrix to subtract.
$m = $m - $b $m = $m - 5; $m = 5 - $m; $m = $m->sub($b); $m = $m->sub(10);
Allow the multiplication of two matrices. Its arguments are the 2 matrices to multiply.
$A = Math::Lapack::Matrix->new( [ [1, 2], [3, 4] ] ); $B = Math::Lapack::Matrix->new( [ [5, 6], [7, 8] ] ); $C = $A->eval_dot($B); $D = $A x $B; # alternative using operator overload
Allow multiply a matrix by a scalar or a matrix by a matrix element-wise. It argment is the scalar to multiply for every element of a matrix.
$m = $m * 5; $m = 5 * $m; $m = $a * $b; $m = $m->mul(5);
Allow make the division of matrix by a scalar or by another matrix. It argument is a scalar or matrix to divide.
$m = $m / $b; $m = $m / 2; $m = 2 / $m; $m = $m->eval_div($b); $m = $m->eval_div(2);
Allow transpose a matrix.
$m = $m->transpose(); $m = transpose($m); $m = $m->T;
Allow make the operation of inverse to the elements of the matrix.
$m = $m->inverse(); $m = inverse($m);
Allow make the exponential operation to every element of the matrix.
$m = $m->exp(); $m = exp($m);
Allow apply the power operation to every element of the matrix. It argument is the scalar to elevate every element of the matrix.
$m = $m->pow(2); $m = pow($m,2);
Allow make the logarithm operation to every element of the matrix.
$m = $m->log(); $m = log($m);
Allow the concatenation of two matrices, vertically. Its arguments are the two matrices to concatenate
index = 0 => concatenate in horizontally index = 1 => concatenate in vertically If it's not used index, by default the function will concatenate horizontally my $m = Math::Lapack::Matrix::concatenate($a, $b); my $m = Math::Lapack::Matrix::concatenate($a, $b, 0); my $m = Math::Lapack::Matrix::concatenate($a, $b, 1);
Allow append a matrix, vertically. It argumet is the matrix to append.
index = 0 => append in horizontally index = 1 => append in vertically If it's not used index, by default the function will append horizontally my $m = $a->append($b); my $m = $a->append($b,1); my $m = $a->append($b,0);
Allow convert a vector with dimentions (m,1) or (1,m) to a list. where m is the number of elements and should be more than 1.
my @vector = $a->vector_to_list();
Allow sum elements of a matrix in horizontally or vertically. It argument is a index that represent to sum in horizontally or vertically the elements of the matrix. If is not used index, the function sum will sum every element of the matrix.
index = 0 => sum in horizontally index = 1 => sum in vertically $m = $m->sum(0); $m = sum($m,1); $m = sum($m);
Allow slice over the elemenents of a matrix. It argument is a hash of options. The options are:
row_range => an array with two values of row min and row max to slice col_range => an array with two values of col min and col max to slice row => specific row col => specific column my $A = Math::Lapack::Matrix->new( [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18] ]); #Get Specific row, row 0 $A->slice( row_range => [0,0] ); $A->slice( row => 0 ); slice($A, row => 0); slice($A, row_range => [0,0]); #Get rows 1,2 and columns 2,3,4,5 slice($A, row_range => [1,2], col_range => [2,5] ); $A->slice( row_range => [1,2], col_range => [2,5] ); #Get column 4 $A->slice( col_range => [4,4] ); $A->slice( col => 4 ); slice($A, col => 4); slice($A, col_range => [4,4]);
Allow read csv to a matrix. Its arguments are the file and a hash of options. The options are:
row_range => an array with two values of row min and row max to slice over the csv col_range => an array with two values of col min and col max to slice over the csv row => specific row col => specific column Math::Lapack::Matrix::read_csv($file, row_range => [1,22])
Allow save a matrix to disk. It argument is the path to save the matrix.
$m->save("path");
Allow save matrix to matlab format. It argument is the path to save.
$m->save_matlab("path.m");
Allow read a matrix to memory from disk. It argument is the path to the file where the matrix as saved before.
$m = Math::Lapack::matrix->read_matrix("path");
Rui Meira
This software is copyright (c) 2018-2019 by Rui Meira.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Math::Lapack, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Math::Lapack
CPAN shell
perl -MCPAN -e shell install Math::Lapack
For more information on module installation, please visit the detailed CPAN module installation guide.