Discussione sull’articolo "Operazioni con matrici e vettori in MQL5" - pagina 3

 
Rashid Umarov #:
Oppure guardate nell'articolo MatrixSetValues, è tutto in bella vista.

Ho capito, grazie, alla fine è come un array bidimensionale.

 
Rashid Umarov #:

Onestamente sono confuso, c'è una descrizione qui 1 e qui 2, e la prima variante è conforme all'articolo, ma nulla è riprodotto dalla seconda. Oppure è che non lo riproduco, ed è possibile leggere i dati nella matrice da un file binario aggirando l'array?

Il secondo link presenta una soluzione di questo tipo.

void matrix .FromFile(const int rows, condt int cols, const int file_handle, const int count=-1, const int offset=0)

daFile

Crea una matrice a partire dai dati contenuti in un file di testo o binario.

Документация по MQL5: Методы матриц и векторов
Документация по MQL5: Методы матриц и векторов
  • www.mql5.com
Методы матриц и векторов - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

È scritto proprio nell'introduzione

Если кратко, то вектор — это одномерный массив типа double, матрица — двумерный массив типа double. Векторы бывают вертикальные и горизонтальные, но в MQL5 они не разделяются.

Матрицы можно представить как массив горизонтальных векторов, где первый индекс матрицы означает номер строки, а второй индекс — номер столбца.


Solo la numerazione delle righe e delle colonne, a differenza dell'algebra lineare, parte da zero, come negli array.

 
Aleksey Vyazmikin #:

Il secondo link presenta questa soluzione.

void matrix .FromFile(const int rows, condt int cols, const int file_handle, const int count=-1, const int offset=0)

dafile

Crea una matrice a partire dai dati contenuti in un file di testo o binario.

Non è ancora implementato

 
Rashid Umarov #:

Lo dice proprio nell'introduzione

È difficile immaginare quali cose vadano prese alla lettera e quali vadano prese astrattamente....

 
Rashid Umarov #:

Non è ancora stato implementato

Capito, aspettiamo.... anche se naturalmente è auspicabile fare lo stesso modo in cui viene letto il file bin, cioè che ci sia un riempimento diverso - quello che è richiesto, e poi già specificare da un posto specifico dove la matrice è lì...

 

Non capisco, una matrice è un array bidimensionale, giusto?

Se voglio trovare il valore massimo in una certa colonna di questa matrice, guardo le istruzioni.

//Пример:

   matrix matrix_a={{10,3,2},{1,8,12},{6,5,4},{7,11,9}};
   Print("matrix_a\n",matrix_a);
 
   vector cols_max=matrix_a.ArgMax(0);
   vector rows_max=matrix_a.ArgMax(1);
   ulong  matrix_max=matrix_a.ArgMax();
 
   Print("cols_max=",cols_max);
   Print("rows_max=",rows_max);
   Print("max index ",matrix_max,"  max value ",matrix_a.Flat(matrix_max));
 
   /*
 matrice_a
 [[10,3,2]
 [1,8,12]
 [6,5,4]
 [7,11,9]]
 cols_max=[0,3,1]
 rows_max=[0,2,0,1]
 indice max 5 valore max 12.0
 */

E come faccio a capire 3 e 4 cifre nelle coordinate quando dovrebbero essere solo due?

E come faccio a ottenere il valore massimo di una determinata colonna alla fine?

 
Come copiare una colonna o una riga specifica di una matrice in un vettore o in un array?
 

Perché devo riaprire il terminale per cancellare la matrice?

Essenza - scrivere codice - riempire la matrice - stampare i risultati della matrice - eseguire lo script - commentare il riempimento della matrice - eseguire lo script - stampare la matrice con i vecchi valori.

 
Rashid Umarov #:

Lo dice proprio nell'introduzione

Beh, nell'immagine si potrebbe cambiare la numerazione da 00, 01, 02.... prima riga, sarebbe subito più chiaro.