====== Armadillo ======
* [[http://arma.sourceforge.net/|Página oficial]]
Librería para realizar operaciones matemáticas como en MATLAB o R desde C++. \\
Para utilizarla, estando bien instalada, únicamente has de incluir la librería ''armadillo''.
#include
#include
using namespace std;
using namespace arma;
int main(int argc, char** argv) {
mat A = randu(4,5);
mat B = randu(4,5);
cout << A*B.t() << endl;
return 0;
}
===== Uso =====
Todas estas funciones están en el namespace ''arma'', accesible a partir de hacer un include de la librería:
#include
==== Uso básico ====
* ''mat A = randu(4,5);'', matriz de 5 columnas y 4 filas con valores aleatorios.
* ''A(0,1);'', acceso a la primera fila, segunda columna de A.
* ''A*B'', multiplicación de matrices.
* ''A.t()'', traspuesta de A.
* ''A.n_rows'' o ''A.n_cols'', devuelven el número de filas y columnas respectivamente.
* ''A.col(k)'' o ''A.row(j)'', devuelven la columna k y la fila j respectivamente.
* ''A.cols(p, q)'' o ''A.rows(p, q)'', devuelven un rango de filas o de columnas.
* Para la creación de matrices:
* ''A.zeros()'' o ''A = zeros(k,k)'', matriz llena de ceros.
* ''A.ones()'' o ''A = ones(k,k)'', matriz llena de unos.
* ''A.eye()'' o ''A = eye(k,k)'', matriz con diagonal a uno.
* Para concatenar matrices:
* ''X = join_rows(A,B)'', concatena filas.
* ''X = join_cols(A,B)'', concatena columnas.
* Para crear una matriz manualmente: ''A << 1 << 2 << endr << 3 << 4 << endr;''
* Puedes guardar y cargar una matriz en ASCII con ''A.save("A.dat", raw_ascii);'' y ''A.load("A.dat", raw_ascii);''.
==== Tipos ====
=== Vectores ===
Se utiliza la clase ''vec''. \\
Podemos indicar el tipo concreto (si vector columna o fila) con ''colvec'' o ''rowvec''.
* El siguiente ejemplo crea un vector columna a partir de un array de doubles (vertices) de tres elementos:
vec cv = vec(vertices, 3);
cout << cv << endl;
* ''P.fill(3)'', substituye todos los valores de P con 3.