- Типы матриц и векторов
- Инициализация
- Манипуляции
- Операции
- Произведения
- Преобразования
- Статистика
- Характеристики
- Решения
- Машинное обучение
Матрицы и векторы
Матрица — двумерный массив чисел типа double, float или complex.
Вектор — одномерный массив чисел типа double, float или complex. При этом у вектора нет признака, какой он — вертикальный или горизонтальный. Определяется из контекста использования, например, векторная операция Dot предполагает, что левый вектор — горизонтальный, правый вектор — вертикальный. Если нужна совершенная определённость, то можно использовать матрицы с одной строкой или одной колонкой, но как правило, в этом нет необходимости.
У матриц и векторов память под данные распределяется динамически. Фактически, матрицы и векторы являются объектами, которые имеют определённые свойства, такие как тип содержащихся данных и размеры. Свойства матриц и векторов могут быть получены при помощи методов, например, vector_a.Size(), matrix_b.Rows(), vector_c.Norm(), matrix_d.Cond() и т.д. При этом любая размерность может быть изменена.
При создании и инициализации матриц используются так называемые статические методы (это как статические методы класса), например: matrix::Eye(), matrix::Identity(), matrix::Ones(), vector::Ones(), matrix::Zeros(), vector::Zeros(), matrix::Full(), vector::Full(), matrix::Tri().
На данный момент операции над матрицами и векторами не предполагают использования типа данных комплекса — в этом направлении работа ещё не закончена.
В MQL5 реализована поддержка передачи матриц и векторов в DLL. Это позволяет импортировать функции, использующие этот тип данных, из внешних библиотек.
Матрицы и векторы передаются в DLL в виде указателя на буфер. Например, для передачи матрицы типа float, соответствующий параметр экспортируемой из DLL-функции должен принимать указатель на буфер с типом float.
MQL5
#import "mmlib.dll"
|
C++
extern "C" __declspec(dllexport) bool sgemm(UINT flags, float *C, const float *A, const float *B, UINT64 M, UINT64 N, UINT64 K, float alpha, float beta) |
Для правильной обработки матриц и векторов, кроме их буферов, следует передавать их размеры.
Ниже перечислены все методы матриц и векторов в алфавитном порядке.
Функция |
Действие |
Категория |
---|---|---|
Вычисляет значения функции активации и записывает в переданный вектор/матрицу |
||
Возвращает индекс максимального значения |
||
Возвращает индекс минимального значения |
||
Возвращает отсортированный индекс |
||
Копирует матрицу, вектор или массив с автоматическим преобразованием |
||
Вычисляет средневзвешенное значение значений матрицы/вектора |
||
Вычисляет разложение Холецкого |
||
Ограничивает элементы матрицы/вектора заданным диапазоном допустимых значений |
||
Возвращает вектор-столбец. Записывает вектор в указанный столбец |
||
Возвращает количество столбцов в матрице |
||
Сравнивает элементы двух матриц/векторов с заданной точностью |
||
Сравнивает элементы двух матриц/векторов на совпадение с точностью значащих цифр |
||
Вычисляет условное число матрицы |
||
Возвращает дискретную линейную свертку двух векторов |
||
Возвращает копию заданной матрицы/вектора |
||
Получает в вектор данные указанного буфера указанного индикатора в указанном количестве |
||
Получает в матрицу или вектор исторические серии структуры MqlRates указанного символа-периода в указанном количестве |
||
Получает в матрицу или вектор тики из структуры MqlTick |
||
Получает в матрицу или вектор тики из структуры MqlTick в указанном диапазоне дат |
||
Вычисляет коэффициент корреляции Пирсона (линейный коэффициент корреляции) |
||
Вычисляет кросс-корреляцию двух векторов |
||
Вычисляет ковариационную матрицу |
||
Возвращает кумулятивное произведение элементов матрицы/вектора, включая элементы вдоль заданной оси |
||
Возвращает кумулятивную сумму элементов матрицы/вектора, включая элементы вдоль заданной оси |
||
Вычисляет значения производной активационной функции и записывает в переданный вектор/матрицу |
||
Вычисляет детерминант квадратной невырожденной матрицы |
||
Извлекает диагональ или строит диагональную матрицу |
||
Скалярное произведение двух векторов |
||
Вычисляет собственные значения и правые собственные векторы квадратной матрицы |
||
Вычисляет собственные значения общей матрицы |
||
Возвращает матрицу с единицами на диагонали и нулями в других местах |
||
Заполняет существующую матрицу или вектор заданным значением |
||
Позволяет обращаться к элементу матрицы через один индекс вместо двух |
||
Создает и возвращает новую матрицу, заполненную заданным значением |
||
Oбщее матричное произведение двух матриц (General Matrix Multiply) |
||
Возвращает количество NaN значений в матрице/векторе |
||
Горизонтальное разделение матрицы на несколько подматриц. То же самое, что Split с axis=0 |
||
Создает единичную матрицу указанного размера |
||
Инициализация матрицы или вектора |
||
Внутреннее произведение двух матриц |
||
Вычисляет (мультипликативную) обратную квадратной невырожденной матрицы методом Жордана-Гаусса |
||
Возвращает произведение Кронекера двух матриц, матрицы и вектора, вектора и матрицы или двух векторов |
||
Вычисляет вектор/матрицу с рассчитанными значениями линейной регрессии |
||
Вычисляет значения функции потерь и записывает в переданный вектор/матрицу |
||
Возвращает решение линейных алгебраических уравнений по методу наименьших квадратов (для неквадратных или вырожденных матриц) |
||
LU-факторизация матрицы как произведения нижней треугольной матрицы и верхней треугольной матрицы |
||
Факторизация LUP с частичной перестановкой, которая относится к разложению LU только с перестановкой строк: PA=LU |
||
Матричное произведение двух матриц |
||
Возвращает максимальное значение в матрице/векторе |
||
Вычисляет среднее арифметическое значений элементов |
||
Вычисляет медиану элементов матрицы/вектора |
||
Возвращает минимальное значение в матрице/векторе |
||
Возвращает норму матрицы или вектора |
||
Создает и возвращает новую матрицу, заполненную единицами |
||
Вычисляет внешнее произведение двух матриц или двух векторов |
||
Возвращает указанный процентиль значений элементов матрицы/вектора или элементов вдоль указанной оси |
||
Вычисляет псевдообратную матрицу методом Мура-Пенроуза |
||
Возводит квадратную матрицу в целочисленную степень |
||
Возвращает произведение элементов матрицы/вектора, которое также может быть выполнено для заданной оси |
||
Возвращает диапазон значений матрицы/вектора или заданной оси матрицы |
||
Вычисляет qr-факторизацию матрицы |
||
Возвращает указанный квантиль значений элементов матрицы/вектора или элементов вдоль указанной оси |
||
Возвращает ранг матрицы с помощью метода Гаусса |
||
Вычисляет регрессионную метрику как ошибку отклонения от линии регрессии, построенной на указанном массиве данных |
||
Изменение формы матрицы без изменения ее данных |
||
Возвращает новую матрицу с измененной формой и размером |
||
Возвращает вектор-строку. Записывает вектор в указанную строку |
||
Возвращает количество строк в матрице |
||
Устанавливает значение для элемента вектора по указанному индексу |
||
Возвращает размер вектора |
||
Вычисляет знак и логарифм определителя матрицы |
||
Решает линейное матричное уравнение или систему линейных алгебраических уравнений |
||
Сортировка по месту |
||
Вычисляет спектр матрицы как набор ее собственных значений из произведения AT*A |
||
Разделение матрицы на несколько подматриц |
||
Возвращает стандартное отклонение значений элементов матрицы/вектора или элементов вдоль заданной оси |
||
Возвращает сумму элементов матрицы/вектора, которая также может быть выполнена для заданной оси (осей) |
||
Сингулярное разложение значений |
||
Меняет местами столбцы в матрице |
||
Меняет местами строки в матрице |
||
Возвращает сумму по диагоналям матрицы |
||
Транспонирует (меняет оси местами) и возвращает измененную матрицу |
||
Строит матрицу с единицами на заданной и ниже диагоналях и нулями в других местах |
||
Возвращает копию матрицы с обнуленными элементами над k-й диагональю. Нижнетреугольная матрица |
||
Возвращает копию матрицы с обнуленными элементами ниже k-й диагонали. Верхнетреугольная матрица |
||
Вычисляет дисперсию значений элементов матрицы/вектора |
||
Вертикальное разделение матрицы на несколько подматриц. То же самое, что Split с axis=1 |
||
Создает и возвращает новую матрицу, заполненную нулями |