跳至内容
矩阵和向量方法

矩阵和向量方法

矩阵和向量

矩阵是一个由双精度、浮点或复数组成的二维数组。

向量是一个由双精度、浮点或复数组成的一维数组。 向量没有指出它是垂直的还是水平的。 它的判定应来自应用的上下文。 例如,向量运算不会假设左侧向量是水平的,右侧向量是垂直的。 如果需要类型指示,则可以采用一行或一列的矩阵。 然而,这通常没有必要。

矩阵和向量为数据动态分配内存。 事实上,矩阵和向量是具有某些属性的对象,诸如它们包含的数据类型和维度。 矩阵和向量属性可以调用 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。 例如,若要传递浮点类型的矩阵,从 DLL 导出的函数,其相应参数必须采用浮点类型的缓冲区指针。

MQL5

#import "mmlib.dll"
bool sgemm(uint flags, matrix<float> &C, const matrix<float> &A, const matrix<float> &B, ulong M, ulong N, ulong K, float alpha, float beta);
#import

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)

除了缓冲区之外,还应该传递矩阵和向量的大小,方可进行正确处理。

下面按字母顺序列出了所有矩阵和向量方法。

函数动作分类
Activation计算激活函数值,并将其写入传递的向量/矩阵机器学习
ArgMax返回最大值的索引统计
ArgMin返回最小值的索引统计
ArgSort返回排序后的索引操纵
Assign复制矩阵、向量或数组,并自动转换初始化
Average计算矩阵/向量值的加权平均值统计
Cholesky计算乔列斯基(Cholesky)分解变换
Clip将矩阵/向量的元素限定到给定的有效值范围操纵
Col返回列向量。 将向量写入指定的列。操纵
Cols返回矩阵中的列数特征
Compare以指定的精度比较两个矩阵/向量的元素操纵
CompareByDigits将两个矩阵/向量的元素按有效数字精度进行比较操纵
Cond计算一个矩阵的条件数特征
Convolve返回两个向量的离散线性卷积乘积
Copy返回给定矩阵/向量的副本操纵
Concat将两个子矩阵连接到一个矩阵。将两个向量连接到一个向量。操纵
CopyIndicatorBuffer将指定数量中指定指标缓冲区的数据获取到向量初始化
CopyRates获取指定品种、周期、数量的历史序列,格式为 MqlRates 结构,并存储到矩阵或向量初始化
CopyTicksMqlTick 结构获取跳价,存储到矩阵或向量中初始化
CopyTicksRangeMqlTick 结构获取跳价,以指定数据范围存储到矩阵或向量中初始化
CorrCoef计算皮尔逊(Pearson)相关系数(线性相关系数)乘积
Correlate计算两个向量的互相关性乘积
Cov计算协方差矩阵乘积
CumProd返回矩阵/向量元素的累积乘积,包括沿给定轴的累积乘积统计
CumSum返回矩阵/矢量元素的累积总和,包括沿给定轴的矩阵/矢量元素统计
Derivative计算激活函数导数值,并将其写入所传递的向量/矩阵机器学习
Det计算平方可逆矩阵的行列式特征
Diag提取对角线或构造对角矩阵操纵
Dot两个向量的点积乘积
Eig计算方阵的本征值和右本征向量变换
EigVals计算一般矩阵的本征值变换
Eye返回一个矩阵,对角线上为 1,其它地方为 0初始化
Fill用指定值填充现有矩阵或向量初始化
Flat通过一个索引替代两个索引访问矩阵元素操纵
Full创建并返回新矩阵,并以给定值填充初始化
GeMMGeMM(通用矩阵乘法)方法实现了两个矩阵的一般乘法乘积
HasNan返回矩阵/向量中NaN值的数量操纵
Hsplit将矩阵水平拆分为多个子矩阵。 与 axis=0 的拆分相同操纵
Identity创建指定大小的单位矩阵初始化
Init矩阵或向量初始化初始化
Inner两个矩阵的内积乘积
Inv用乔丹-高斯(Jordan-Gauss)方法计算平方可逆矩阵的乘法逆解法
Kron返回两个矩阵、矩阵和向量,向量和矩阵、或两个向量的克罗内克(Kronecker)乘积乘积
LinearRegression计算包含计算的线性回归值的向量/矩阵统计
Loss计算损失函数值,并将其写入所传递的向量/矩阵机器学习
LstSq返回线性代数方程的最小二乘解(对于非二乘或退化矩阵)解法
LU实现矩阵的 LU 分解:下三角矩阵和上三角矩阵的乘积变换
LUP以部分排列实现 LUP 分解,这仅指具有行排列的 LU 分解:PA=LU变换
MatMul两个矩阵的矩阵乘积乘积
Max返回矩阵/向量中的最大值统计
Mean计算元素值的算术平均值统计
Median计算矩阵/向量元素的中位数统计
Min返回矩阵/向量中的最小值统计
Norm返回矩阵或向量范数特征
Ones创建并返回一个新矩阵,其中以 1 填充初始化
Outer计算两个矩阵或两个向量的外积乘积
Percentile返回矩阵/向量元素,或沿指定轴的元素值的指定百分位数统计
PInv遵照摩尔-彭罗斯(Moore-Penrose)方法计算矩阵的伪逆解法
Power将方阵提高整数幂乘积
Prod返回矩阵/向量元素的乘积,也可以针对给定轴执行统计
Ptp返回矩阵/向量或给定矩阵轴的数值范围统计
QR计算矩阵的 QR 分解变换
Quantile返回矩阵/向量元素,或沿指定轴的元素值的指定分位数统计
Random静态函数。创建并返回一个填充了随机值的新矩阵或向量。随机值在指定范围内均匀生成。初始化
Rank返回利用高斯(Gaussian)方法的矩阵秩特征
RegressionMetric在指定数据数组上构建回归线,并计算回归量程作为偏差误差统计
Reshape在不更改矩阵数据的情况下更改矩阵的形状操纵
Resize返回形状和大小均已更改的新矩阵操纵
Row返回行向量。 将向量写入指定行操纵
Rows返回矩阵中的行数特征
Set根据指定索引设置向量元素值操纵
Size返回向量的大小特征
SLogDet计算矩阵行列式的符号和对数特征
Solve求解线性矩阵方程或线性代数方程组解法
Sort按位置排序操纵
Spectrum计算矩阵的谱作为其本征值的集合,来自乘积 AT*A特征
Split将矩阵拆分为多个子矩阵操纵
Std返回矩阵/向量元素,或沿指定轴的元素值的标准偏差统计
Sum返回矩阵/矢量元素的总和,也可以针对给定的轴(多轴)执行统计
SVD奇异值分解变换
SwapCols交换矩阵中的列操纵
SwapRows交换矩阵中的行操纵
Trace返回矩阵对角线的总和特征
Transpose转置(轴交换)并返回修改后的矩阵操纵
Tri构造一个矩阵,在指定的对角线上及以下为 1,在其它地方为零初始化
TriL返回矩阵的副本,其中第 k 个对角线以上的元素归零。 下三角矩阵操纵
TriU返回矩阵的副本,其中第 k 个对角线下方的元素归零。 上三角矩阵操纵
Var计算矩阵/向量元素值的方差统计
Vsplit将矩阵垂直拆分为多个子矩阵。 axis=1 的拆分相同操纵
Zeros创建并返回一个新矩阵,填充零初始化