Matrices y vectores

Una matriz es un array bidimensional de números double, float o complex.

Un vector es un array unidimensional de números double, float o complex. Al mismo tiempo, el vector no tiene signo sobre si es vertical u horizontal. Se determina partiendo del contexto de uso, por ejemplo, la operación vectorial Dot asume que el vector izquierdo es horizontal y el vector derecho es vertical. Si necesitamos una certeza absoluta, es posible usar matrices de una fila o de una columna, pero, en general, esto no resulta necesario.

Las matrices y vectores asignan la memoria para los datos dinámicamente. De hecho, las matrices y vectores son objetos que tienen ciertas propiedades, como el tipo de datos que contienen y las dimensiones. Las propiedades de las matrices y vectores se pueden obtener usando métodos como vector_a.Size(), matrix_b.Rows(), vector_c.Norm(), matrix_d.Cond(), etc. En este caso, podremos cambiar cualquier dimensionalidad.

Al crear e inicializar matrices, se usan los llamados métodos estáticos (son como métodos estáticos de una clase), por ejemplo: matrix::Eye(), matrix::Identity(), matrix::Ones(), vector::Ones(), matrix::Zeros(), vector::Zeros(), matrix::Full(), vector::Full(), matrix::Tri().

Por el momento, las operaciones con matrices y vectores no implican el uso del tipo de datos complejo; aún no se ha completado el trabajo en este plano.

MQL5 admite la transmisión de matrices y vectores a DLL. Esto permite que las funciones que usan este tipo de datos se importen desde bibliotecas externas.

Las matrices y vectores se transmiten a la DLL como el puntero a un búfer. Por ejemplo, para transmitir una matriz de tipo float, el parámetro correspondiente de la función DLL exportada deberá adoptar el puntero a un búfer de tipo float.

MQL5

#import "mmlib.dll"
bool sgemm(uint flagsmatrix<float> &C, const matrix<float> &A, const matrix<float> &Bulong Mulong Nulong Kfloat alphafloat beta);
#import

C++

extern "C" __declspec(dllexportbool sgemm(UINT flagsfloat *Cconst float *Aconst float *BUINT64 MUINT64 NUINT64 Kfloat alphafloat beta)

Para procesar correctamente las matrices y vectores, además de sus búferes, es necesario transmitir sus tamaños.

Todos los métodos matriciales y vectoriales se enumeran a continuación en orden alfabético.

Función

Acción

Categoría

Activation

Calcula los valores de la función de activación y los escribe en el vector/matriz trasmitido

Aprendizaje automático

ArgMax

Retorna el índice del valor máximo

Estadísticas

ArgMin

Retorna el índice del valor mínimo

Estadísticas

ArgSort

Retorna el índice clasificado

Manipulación

Assign

Copia una matriz, vector o array con transformación automática

Inicialización

Average

Calcula la media ponderada de valores de matriz/vector

Estadísticas

Cholesky

Calcula la descomposición de Cholesky

Transformación

Clip

Limita los elementos de una matriz/vector a un rango dado de valores válidos

Manipulación

Col

Retorna un vector de columna. Escribe un vector en la columna especificada

Manipulación

Cols

Retorna el número de columnas en la matriz

Características

Compare

Compara los elementos de dos matrices/vectores con una precisión determinada

Manipulación

CompareByDigits

Compara si los elementos de dos matrices/vectores coinciden con una precisión de dígitos significativos

Manipulación

Cond

Calcula el número condicional de la matriz

Características

Convolve

Retorna la convolución lineal discreta de dos vectores

Productos

Copy

Retorna la copia de una matriz/vector dado

Manipulación

CopyIndicatorBuffer

Obtiene en un vector los datos del búfer indicado del indicador especificado en la cantidad especificada

Inicialización

CopyRates

Obtiene las series históricas de la estructura MqlRates en una matriz o vector del símbolo-periodo especificado en la cantidad especificada.

Inicialización

CopyTicks

Obtiene en una matriz o vector los ticks de la estructura MqlTick

Inicialización

CopyTicksRange

Obtiene en una matriz o vector los ticks de la estructura MqlTick en el intervalo de fechas indicado

Inicialización

CorrCoef

Calcula el coeficiente de correlación de Pearson (coeficiente de correlación lineal)

Productos

Correlate

Calcula la correlación cruzada de dos vectores

Productos

Cov

Calcula la matriz de covarianza

Productos

CumProd

Retorna el producto acumulativo de los elementos de una matriz/vector incluidos los elementos a lo largo de un eje determinado

Estadísticas

CumSum

Retorna la suma acumulativa de los elementos de una matriz/vector incluidos los elementos a lo largo de un eje determinado

Estadísticas

Derivative

Calcula los valores de la derivada de la función de activación y los escribe en el vector/matriz transmitido

Aprendizaje automático

Det

Calcula el determinante de una matriz cuadrada no degenerada

Características

Diag

Extrae una diagonal o construye una matriz diagonal

Manipulación

Dot

Producto escalar de dos vectores

Productos

Eig

Calcula los valores propios y los vectores propios derechos de una matriz cuadrada

Transformación

EigVals

Calcula los valores propios de la matriz global

Transformación

Eye

Retorna una matriz con unidades en la diagonal y ceros en el resto de sitios

Inicialización

Fill

Rellena una matriz o vector existente con el valor dado

Inicialización

Flat

Permite referirse a un elemento de la matriz usando un único índice en lugar de dos

Manipulación

Full

Crea y retorna una nueva matriz rellenada con el valor dado

Inicialización

GeMM

Producto matricial total de dos matrices (General Matrix Multiply)

Productos

HasNan

Retorna el número de valores NaN en una matriz/vector

Manipulación

Hsplit

Partición horizontal de una matriz en varias submatrices. Lo mismo que Split con axis=0

Manipulación

Identity

Crea una matriz unitaria con el tamaño especificado

Inicialización

Init

Inicialización de una matriz o un vector

Inicialización

Inner

Producto interior de dos matrices

Productos

Inv

Calcula la inversa (multiplicativa) de una matriz cuadrada no degenerada usando el método de Jordan-Gauss.

Soluciones

Kron

Retorna el producto de Kronecker de dos matrices, una matriz y un vector, un vector y una matriz o dos vectores

Productos

LinearRegression

Calcula un vector/matriz con los valores de regresión lineal calculados

Estadísticas

Loss

Calcula los valores de la función de pérdida y los escribe en el vector/matriz trasmitido

Aprendizaje automático

LstSq

Retorna la solución de ecuaciones algebraicas lineales según el método de los mínimos cuadrados (para matrices no cuadradas o degeneradas)

Soluciones

LU

Factorización LU de una matriz como producto de una matriz triangular inferior y una matriz triangular superior

Transformación

LUP

Factorización LUP con permutación parcial que se refiere a la descomposición LU solo con permutación de cadenas: PA=LU

Transformación

MatMul

Producto matricial de dos matrices

Productos

Max

Retrona el valor máximo de la matriz/vector

Estadísticas

Mean

Calcula la media aritmética de los valores de los elementos

Estadísticas

Median

Calcula la mediana de los elementos de la matriz/vector

Estadísticas

Min

Retorna el valor mínimo de la matriz/vector

Estadísticas

Norm

Retorna la norma de una matriz o vector

Características

Ones

Crea y retorna una nueva matriz rellenada con unidades

Inicialización

Outer

Calcula el producto exterior de dos matrices o dos vectores

Productos

Percentile

Retorna el percentil especificado de los valores o elementos de la matriz/vector a lo largo del eje especificado

Estadísticas

PInv

Calcula una matriz pseudoinversa según el método de Moore-Penrose

Soluciones

Power

Eleva una matriz cuadrada a una potencia entera

Productos

Prod

Retorna el producto de los elementos de una matriz/vector, que también puede ejecutarse para un eje dado

Estadísticas

Ptp

Retorna el rango de valores de una matriz/vector o un eje de la matriz dado

Estadísticas

QR

Calcula la factorización QR de una matriz

Transformación

Quantile

Retorna el cuantil especificado de los valores de los elementos de la matriz/vector o los elementos a lo largo del eje especificado

Estadísticas

Rank

Retorna el rango de una matriz utilizando el método de Gauss

Características

RegressionMetric

Calcula la métrica de regresión como el error de desviación respecto a la línea de regresión trazada en el conjunto de datos especificado.

Estadísticas

Reshape

Cambia la forma de una matriz sin modificar sus datos

Manipulación

Resize

Retorna una nueva matriz con la forma y el tamaño modificados

Manipulación

Row

Devuelve un vector de filas. Escribe el vector en la fila especificada

Manipulación

Rows

Retorna el número de filas en la matriz

Características

Set

Establece el valor para el elemento del vector según el índice especificado

Manipulación

Size

Retorna el tamaño del vector

Características

SLogDet

Calcula el signo y el logaritmo del determinante de la matriz

Características

Solve

Resuelve una ecuación matricial lineal o un sistema de ecuaciones algebraicas lineales

Soluciones

Sort

Clasificación según el lugar

Manipulación

Spectrum

Calcula el espectro de una matriz como el conjunto de sus valores propios partiendo del producto AT*A

Características

Split

Partición de una matriz en varias submatrices

Manipulación

Std

Retorna la desviación estándar de los valores o elementos de la matriz/vector a lo largo de un eje determinado

Estadísticas

Sum

Retorna la suma de los elementos de una matriz/vector que también se puede ejecutar para un eje(s) dado(s)

Estadísticas

SVD

Descomposición singular de valores

Transformación

SwapCols

Intercambia las columnas de la matriz

Manipulación

SwapRows

Intercambia las filas de la matriz

Manipulación

Trace

Retorna la suma según las diagonales de la matriz

Características

Transpose

Transforma (intercambia los ejes) y retorna una matriz modificada

Manipulación

Tri

Construye una matriz con unidades en las diagonales especificada e inferior y ceros en el resto

Inicialización

TriL

Retorna una copia de la matriz con los elementos a cero sobre la k-ésima diagonal. Matriz triangular inferior

Manipulación

TriU

Retorna una copia de la matriz con los elementos a cero por debajo de la k-ésima diagonal. Matriz triangular superior

Manipulación

Var

Calcula la varianza de los valores de los elementos de la matriz/vector

Estadísticas

Vsplit

Partición vertical de una matriz en varias submatrices. Lo mismo que Split con axis=1

Manipulación

Zeros

Crea y retorna una nueva matriz rellenada con ceros

Inicialización