Matrici e vettori

Una matrice è un array bidimensionale di numeri di tipo double,float, o complex.

Un vettore è un array unidimensionale di numeri di tipo double, float o complex. Il vettore non ha alcuna indicazione se sia verticale o orizzontale. È determinato dal contesto d'uso. Ad esempio, l'operazione vettoriale Dot presuppone che il vettore sinistro sia orizzontale e quello destro verticale. Se è richiesta l'indicazione del tipo, è possibile utilizzare matrici a una riga o a una colonna. Tuttavia, questo non è generalmente necessario.

Matrici e vettori allocano dinamicamente la memoria per i dati. Infatti, matrici e vettori sono oggetti che hanno determinate proprietà, come il tipo di dati che contengono e le dimensioni. Le proprietà della matrice e del vettore possono essere ottenute utilizzando metodi come vector_a.Size(), matrix_b.Rows(), vector_c.Norm(), matrix_d.Cond() e altri. Qualsiasi dimensione può essere cambiata.

Quando si creano e inizializzano le matrici, vengono utilizzati i cosiddetti metodi statici (questi sono come i metodi statici di una classe). Per esempio: matrix::Eye(), matrix::Identity(), matrix::Ones(), vector::Ones(), matrix: :Zeros(), vector::Zeros(), matrix::Full(), vector::Full(), matrix::Tri().

Al momento, le operazioni matriciali e vettoriali non implicano l'uso del tipo di dati complex, poiché questa direzione di sviluppo non è ancora stata completata.

MQL5 supporta il passaggio di matrici e vettori a DLL. Questo permette l'importazione di funzioni che utilizzano i tipi corrispondenti, da variabili esterne.

Matrici e vettori sono passati a una DLL come puntatore a un buffer. Ad esempio, per passare una matrice di tipo float, il parametro corrispondente della funzione esportata dalla DLL deve avere un puntatore ad un buffer di 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)

Oltre ai buffer, dovresti passare le dimensioni della matrice e del vettore per una corretta elaborazione.

Tutti i metodi matriciali e vettoriali sono elencati di seguito in ordine alfabetico.

Funzione

Azione

Categoria

Activation

Calcola i valori della funzione di attivazione e li scrive sul vettore/matrice passato

Apprendimento automatico

ArgMax

Restituisce l'indice del valore massimo

Statistica

ArgMin

Restituisce l'indice del valore minimo

Statistica

ArgSort

Restituisce l'indice ordinato

Manipolazioni

Assign

Copia una matrice, vettore o array con auto cast

Inizializzazione

Average

Calcola la media ponderata dei valori della matrice/vettore

Statistica

Cholesky

Calcola la decomposizione di Cholesky

Trasformazioni

Clip

Limita gli elementi di una matrice/vettore ad un determinato intervallo di valori validi

Manipolazioni

Col

Restituisce la colonna di un vettore. Scrive un vettore nella colonna specificata.

Manipolazioni

Cols

Restituisce il numero di colonne in una matrice

Caratteristiche

Compare

Confronta gli elementi di due matrici/vettori con la precisione specificata

Manipolazioni

CompareByDigits

Confronta gli elementi di due matrici/ vettori con la precisione di cifre importanti

Manipolazioni

Cond

Calcola il numero di condizione di una matrice

Caratteristiche

Convolve

Restituisce la discreta, convoluzione lineare di due vettori

Prodotti

Copy

Restituisce una copia della matrice/vettore dato

Manipolazioni

CopyIndicatorBuffer

Ottiene i dati del buffer dell'indicatore specificato nella quantità specificata in un vettore

Inizializzazione

CopyRates

Ottiene la serie storica della struttura MqlRates del periodo-simbolo specificato nella quantità specificata in una matrice o vettore

Inizializzazione

CopyTicks

Ottiene i tick da una struttura MqlTick in una matrice o un vettore

Inizializzazione

CopyTicksRange

Ottiene i tick da una struttura MqlTick in una matrice o un vettore entro l'intervallo di date specificato

Inizializzazione

CorrCoef

Calcola il coefficiente di correlazione di Pearson (coefficiente di correlazione lineare)

Prodotti

Correlate

Calcola la correlazione incrociata di due vettori

Prodotti

Cov

Calcola la matrice di covarianza

Prodotti

CumProd

Restituisce il prodotto cumulativo degli elementi matrice/vettore, compresi quelli lungo l'asse dato

Statistica

CumSum

Restituisce la somma cumulativa degli elementi matrice/vettore, compresi quelli lungo l'asse dato

Statistica

Derivative

Calcola i valori derivati della funzione di attivazione e li scrive nel vettore/matrice passato

Apprendimento automatico

Det

Calcola il determinante di una matrice invertibile quadrata

Caratteristiche

Diag

Estrae una diagonale o costruisce una diagonale della matrice

Manipolazioni

Dot

Prodotto scalare di due vettori

Prodotti

Eig

Calcola gli autovalori e gli autovettori destri di una matrice quadrata

Trasformazioni

EigVals

Calcola gli autovalori di una matrice generale

Trasformazioni

Eye

Restituisce una matrice con uno sulla diagonale e zero altrove

Inizializzazione

Fill

Riempire una matrice o un vettore esistente con il valore specificato

Inizializzazione

Flat

Accesso a un elemento matrice tramite un indice anziché due

Manipolazioni

Full

Crea e restituisce una nuova matrice riempita con il valore dato

Inizializzazione

GeMM

Il metodo GeMM (General Matrix Multiply) implementa la moltiplicazione generale di due matrici

Prodotti

HasNan

Restituisce il numero dei valori NaN in una matrice/vettore

Manipolazioni

Hsplit

Divide una matrice orizzontalmente in più sottomatrici. Stesso di Split con asse=0

Manipolazioni

Identity

Crea una matrice di identità della dimensione specificata

Inizializzazione

Init

Inizializzazione di matrice o vettore

Inizializzazione

Inner

Prodotto interno di due matrici

Prodotti

Inv

Calcola l'inverso moltiplicativo di una matrice invertibile quadrata con il metodo di Jordan-Gauss

Soluzioni

Kron

Restituisce il prodotto di Kronecker di due matrici, matrice e vettore, vettore e matrice o due vettori

Prodotti

LinearRegression

Calcola un vettore/matrice con i valori di regressione lineare calcolati

Statistica

Loss

Calcola i valori delle funzioni di perdita e li scrive nel vettore/matrice passato

Apprendimento automatico

LstSq

Restituisce la soluzione dei minimi quadrati delle equazioni algebriche lineari (per matrici non quadrate o degenerate)

Soluzioni

LU

Implementa una decomposizione LU di una matrice: il prodotto di una matrice triangolare inferiore e di una matrice triangolare superiore

Trasformazioni

LUP

Implementare una fattorizzazione LUP con permutazione parziale, che si riferisce alla decomposizione LU solo con permutazioni di riga: PA=LU

Trasformazioni

MatMul

Matrice con il prodotto di due matrici

Prodotti

Max

Restituisce il valore massimo in una matrice/vettore

Statistica

Mean

Calcola la media aritmetica dei valori degli elementi

Statistica

Median

Calcola la mediana degli elementi matrice/vettore

Statistica

Min

Restituisce il valore minimo in una matrice/vettore

Statistica

Norm

Restituisce la norma di una matrice o vettore

Caratteristiche

Ones

Crea e restituisce una nuova matrice riempita con uno

Inizializzazione

Outer

Calcola il prodotto esterno di due matrici o due vettori

Prodotti

Percentile

Restituisce il percentile specificato dei valori degli elementi della matrice/vettore o degli elementi lungo l'asse specificato

Statistica

PInv

Calcola lo pseudo-inverso di una matrice con il metodo di Moore-Penrose

Soluzioni

Power

Eleva una matrice quadrata a una potenza intera

Prodotti

Prod

Restituisce il prodotto degli elementi matrice/vettore, che possono anche essere eseguiti per l'asse dato

Statistica

Ptp

Restituisce l'intervallo di valori di una matrice/vettore o dell'asse della matrice dato

Statistica

QR

Calcola la fattorizzazione qr di una matrice

Trasformazioni

Quantile

Restituisce il quantile specificato dei valori degli elementi della matrice/vettore o degli elementi lungo l'asse specificato

Statistica

Rank

Restituisce il rango di una matrice utilizzando il metodo Gaussiano

Caratteristiche

RegressionMetric

Calcola la metrica dei regressori come errore di deviazione dalla linea di regressione costruita sull'array di dati specificato

Statistica

Reshape

Modifica la forma di una matrice senza modificare i suoi dati

Manipolazioni

Resize

Restituisce una nuova matrice con forma e dimensione modificata

Manipolazioni

Row

Restituisce la riga del vettore. Scrive il vettore nella riga specificata

Manipolazioni

Rows

Restituisce il numero di righe in una matrice

Caratteristiche

Size

Restituisce la dimensione del vettore

Caratteristiche

SLogDet

Calcola il segno e il logaritmo del determinante di una matrice

Caratteristiche

Solve

Risolve un'equazione matriciale lineare o un sistema di equazioni algebriche lineari

Soluzioni

Sort

Ordina per posizione

Manipolazioni

Spectrum

Calcola lo spettro di una matrice come l'insieme dei suoi autovalori dal prodotto AT*A

Caratteristiche

Split

Divide una matrice in più sottomatrici

Manipolazioni

Std

Restituisce la deviazione standard dei valori degli elementi della matrice/vettore o degli elementi lungo l'asse specificato

Statistica

Sum

Restituisce la somma degli elementi della matrice/vettore, che possono anche essere eseguiti per l'asse dato (assi)

Statistica

SVD

Decomposizione ai valori singolari

Trasformazioni

SwapCols

Scambia le colonne in una matrice

Manipolazioni

SwapRows

Scambia le righe in una matrice

Manipolazioni

Trace

Restituisce la somma sulle diagonali della matrice

Caratteristiche

Transpose

Traspone (scambia gli assi) e restituisce la matrice modificata

Manipolazioni

Tri

Costruisce una matrice con uno sulla diagonale specificata e sotto di essa e zeri altrove

Inizializzazione

TriL

Restituisce una copia di una matrice con gli elementi sopra la diagonale k azzerati. Matrice triangolare inferiore

Manipolazioni

TriU

Restituisce una copia di una matrice con gli elementi sotto la diagonale k azzerati. Matrice triangolare superiore

Manipolazioni

Var

Calcola la varianza dei valori degli elementi della matrice/vettore

Statistica

Vsplit

Divide una matrice verticalmente in più sottomatrici. Stesso di Split con asse=1

Manipolazioni

Zeros

Crea e restituisce una nuova matrice piena di zeri

Inizializzazione