При работе с матрицами и векторами доступны базовые манипуляции без проведения каких-либо вычислений. В начале списка приведены исключительно матричные методы, а четыре последних также применимы и для векторов.
Обратите внимание, что разделение вектора не предусмотрено.
Ниже представлены прототипы методов для матриц.
matrix<T> matrix<T>::Transpose()
vector matrix<T>::Col∫Row(const ulong n)
void matrix<T>::Col∫Row(const vector v, const ulong n)
vector matrix<T>::Diag(const int n = 0)
void matrix<T>::Diag(const vector v, const int n = 0)
matrix<T> matrix<T>::TriL∫TriU(const int n = 0)
bool matrix<T>::SwapCols∫SwapRows(const ulong n1, const ulong n2)
T matrix<T>::Flat(const ulong i)
bool matrix<T>::Flat(const ulong i, const T value)
bool matrix<T>::Resize(const ulong rows, const ulong cols, const ulong reserve = 0)
void matrix<T>::Reshape(const ulong rows, const ulong cols)
ulong matrix<T>::Compare(const matrix<T> &m, const T epsilon)
ulong matrix<T>::CompareByDigits(const matrix &m, const int digits)
bool matrix<T>::Split(const ulong nparts, const int axis, matrix<T> &splitted[])
void matrix<T>::Split(const ulong &parts[], const int axis, matrix<T> &splitted[])
bool matrix<T>::Hsplit∫Vsplit(const ulong nparts, matrix<T> &splitted[])
void matrix<T>::Hsplit∫Vsplit(const ulong &parts[], matrix<T> &splitted[])
void matrix<T>::Sort(func_reference compare = NULL, T context)
void matrix<T>::Sort(const int axis, func_reference compare = NULL, T context)
matrix<T> matrix<T>::Sort(func_reference compare = NULL, T context)
matrix<T> matrix<T>::Sort(const int axis, func_reference compare = NULL, T context)
bool matrix<T>::Clip(const T min, const T max)
Для векторов — набор методов поменьше.
bool vector<T>::Resize(const ulong size, const ulong reserve = 0)
ulong vector<T>::Compare(const vector<T> &v, const T epsilon)
ulong vector<T>::CompareByDigits(const vector<T> &v, const int digits)
void vector<T>::Sort(func_reference compare = NULL, T context)
vector vector<T>::Sort(func_reference compare = NULL, T context)
bool vector<T>::Clip(const T min, const T max)
Пример транспонирования матрицы:
matrix a = {{0, 1, 2}, {3, 4, 5}};
|
Несколько примеров установки разных диагоналей методом Diag:
vector v1 = {1, 2, 3};
|
Изменение конфигурации матрицы методом Reshape:
matrix matrix_a = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12}};
|
Разделение матриц на подматрицы мы применим в примере в разделе о Решении уравнений.
Методы Col и Row позволяют не только получать столбцы или строки матрицы по их номеру, но и вставлять их "по месту" в ранее определенные матрицы. При этом не меняются ни размеры матрицы, ни значения элементов за пределами вектора-столбца (для случая Col) или вектора-строки (для случая Row).
Если же любой из этих двух методов применяется к матрице, размеры которой еще не установлены, то будет создана нулевая матрица размером [N * M], где N и M определяются по-разному для Col и Row, исходя из длины вектора и заданного индекса столбца или строки:
На момент написания данной главы в MQL5 не предусмотрено методов для полноценной вставки строк и столбцов с раздвиганием последующих элементов, а также исключение заданных строк и столбцов.