Обсуждение статьи "Работа с матрицами и векторами в MQL5" - страница 3

 
Rashid Umarov #:

Я честно говоря запутался, есть описание тут 1 и тут 2 , при этом первый вариант по статье, а из второго ничего не воспроизводится. Или это у меня не воспроизводится, и можно как то прочесть данные в матрицу из бинарного файла минуя массив?

По второй ссылке есть такое решение.

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

fromfile

Создает матрицу из данных в текстовом или двоичном файле

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

Это написано прямо во вступлении

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

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


Только нумерация строк и столбцов, в отличие от линейной алгебры, начинается с нуля, как и в массивах.

 
Aleksey Vyazmikin #:

По второй ссылке есть такое решение.

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

fromfile

Создает матрицу из данных в текстовом или двоичном файле

Это пока не реализовано

 
Rashid Umarov #:

Это написано прямо во вступлении

Сложно же представить, какие вещи надо буквально понимать, а какие абстрактно...

 
Rashid Umarov #:

Это пока не реализовано

Понял, подождем.... хотя конечно желательно сделать так же, как читается bin файл, т.е. что б там было разное наполнение - что требуется, а потом уже указывать с конкретного места где матрица там...

 

Вот жеж, я не понимаю, матрица - двухмерный массив как бы - правда?

Я хочу в массиве таком найти максимальное значение в определенном столбце, иду смотреть инструкцию.

//Пример:

   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
   */

И как я должен понимать 3 и 4 цифры в координатах, когда должно быть только две???

И, как в итоге получить максимальное значение заданного столбца?

 
Как скопировать в вектор или массив конкретный столбец/строку матрицы?
 

Почему приходиться переоткрывать терминал, что б матрица очистилась?

Суть - пишу код - заполняю матрицу - печатаю итоги матрицы - запускаю скрипт - комментирую заполнение матрицы - запускаю скрипт - принтуется матрица со старыми значениями.

 
Rashid Umarov #:

Это написано прямо во вступлении

Ну так в картинке можно и поменять тогда нумерацию с 00, 01, 02... первый ряд, было бы понятней сразу.

 
Aleksey Vyazmikin #:

Вот жеж, я не понимаю, матрица - двухмерный массив как бы - правда?

Я хочу в массиве таком найти максимальное значение в определенном столбце, иду смотреть инструкцию.

И как я должен понимать 3 и 4 цифры в координатах, когда должно быть только две???

И, как в итоге получить максимальное значение заданного столбца?

Косяк / баг видимо))) Копипастнули не удачно.