Discussão do artigo "Operações com Matrizes e Vetores em MQL5" - página 3

 
Rashid Umarov #:
Ou dê uma olhada no artigo MatrixSetValues, está tudo à vista.

Entendi, obrigado, é como uma matriz bidimensional no final.

 
Rashid Umarov #:

Sinceramente, estou confuso, há uma descrição aqui 1 e aqui 2, e a primeira variante está de acordo com o artigo, mas nada é reproduzido na segunda. Ou será que eu não reproduzo e é possível ler os dados na matriz a partir de um arquivo binário, ignorando a matriz?

O segundo link tem essa solução.

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

fromfile

Cria uma matriz a partir de dados em um arquivo de texto ou binário

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

Está escrito logo na introdução

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

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


Somente a numeração de linhas e colunas, diferentemente da álgebra linear, começa do zero, como nas matrizes.

 
Aleksey Vyazmikin #:

O segundo link apresenta esta solução.

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

fromfile

Cria uma matriz a partir de dados em um arquivo de texto ou binário

Isso ainda não foi implementado

 
Rashid Umarov #:

O texto diz isso logo na introdução

É difícil imaginar quais coisas devem ser tomadas literalmente e quais devem ser tomadas abstratamente....

 
Rashid Umarov #:

Isso ainda não foi implementado

Entendi, vamos aguardar.... embora, é claro, seja desejável fazer da mesma forma que o arquivo bin é lido, ou seja, que haveria um preenchimento diferente - o que é necessário e, em seguida, já especificar a partir de um local específico onde a matriz está lá...

 

Não estou entendendo, uma matriz é uma matriz bidimensional, certo?

Quero encontrar o valor máximo em uma determinada coluna dessa matriz, vou dar uma olhada nas instruções.

//Пример:

   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));
 
   /*
 matrix_a
 [[10,3,2]
 [1,8,12]
 [6,5,4]
 [7,11,9]]
 cols_max=[0,3,1]
 rows_max=[0,2,0,1]
 max index 5 max value 12.0
 */

E como posso entender 3 e 4 dígitos nas coordenadas quando deveria haver apenas dois?

E como faço para obter o valor máximo de uma determinada coluna no final?

 
Como copiar uma coluna/linha específica de uma matriz em um vetor ou matriz?
 

Por que tenho que reabrir o terminal para limpar a matriz?

Essência - escrever código - preencher a matriz - imprimir os resultados da matriz - executar o script - comentar o preenchimento da matriz - executar o script - imprimir a matriz com valores antigos.

 
Rashid Umarov #:

O texto diz isso logo na introdução

Bem, na imagem, você poderia alterar a numeração de 00, 01, 02.... primeira linha, ficaria mais claro imediatamente.