Ma trận và vector
Một ma trận là một mảng hai chiều chứa các số kiểu double
, float
hoặc số phức.
Một vector là một mảng một chiều chứa các số kiểu double
, float
hoặc số phức. Vector không có chỉ dẫn về việc nó là dọc hay ngang. Điều này được xác định từ ngữ cảnh sử dụng. Ví dụ, phép toán vector Dot
giả định rằng vector bên trái là ngang và vector bên phải là dọc. Nếu cần chỉ định kiểu, có thể sử dụng ma trận một hàng hoặc một cột. Tuy nhiên, điều này thường không cần thiết.
Ma trận và vector cấp phát bộ nhớ cho dữ liệu một cách động. Thực tế, ma trận và vector là các đối tượng có các thuộc tính nhất định, chẳng hạn như kiểu dữ liệu chúng chứa và kích thước. Các thuộc tính của ma trận và vector có thể được lấy bằng các phương thức như vector_a.Size()
, matrix_b.Rows()
, vector_c.Norm()
, matrix_d.Cond()
và các phương thức khác. Bất kỳ kích thước nào cũng có thể được thay đổi.
Khi tạo và khởi tạo ma trận, các phương thức tĩnh được gọi là (giống như phương thức tĩnh của một lớp) được sử dụng. Ví dụ: matrix::Eye()
, matrix::Identity()
, matrix::Ones()
, vector::Ones()
, matrix::Zeros()
, vector::Zeros()
, matrix::Full()
, vector::Full()
, matrix::Tri()
.
Hiện tại, các phép toán ma trận và vector không hỗ trợ sử dụng kiểu dữ liệu phức, vì hướng phát triển này chưa được hoàn thiện.
MQL5 hỗ trợ truyền ma trận và vector vào DLL. Điều này cho phép nhập các hàm sử dụng các kiểu tương ứng từ các biến bên ngoài.
Ma trận và vector được truyền vào DLL dưới dạng con trỏ tới bộ đệm. Ví dụ, để truyền một ma trận kiểu float
, tham số tương ứng của hàm được xuất từ DLL phải nhận một con trỏ bộ đệm kiểu float
.
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
2
3
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)
Ngoài các bộ đệm, bạn nên truyền kích thước của ma trận và vector để xử lý chính xác.
Tất cả các phương thức của ma trận và vector được liệt kê dưới đây theo thứ tự bảng chữ cái.
Hàm | Hành động | Danh mục |
---|---|---|
Activation | Tính giá trị hàm kích hoạt và ghi chúng vào vector/ma trận được truyền | Machine learning |
ArgMax | Trả về chỉ số của giá trị lớn nhất | Statistics |
ArgMin | Trả về chỉ số của giá trị nhỏ nhất | Statistics |
ArgSort | Trả về chỉ số đã được sắp xếp | Manipulations |
Assign | Sao chép một ma trận, vector hoặc mảng với ép kiểu tự động | Initialization |
Average | Tính trung bình có trọng số của các giá trị ma trận/vector | Statistics |
Cholesky | Tính phân rã Cholesky | Transformations |
Clip | Giới hạn các phần tử của ma trận/vector trong một phạm vi giá trị hợp lệ | Manipulations |
Col | Trả về một vector cột. Ghi một vector vào cột được chỉ định | Manipulations |
Cols | Trả về số lượng cột trong ma trận | Features |
Compare | So sánh các phần tử của hai ma trận/vector với độ chính xác được chỉ định | Manipulations |
CompareByDigits | So sánh các phần tử của hai ma trận/vector với độ chính xác chữ số có nghĩa | Manipulations |
Cond | Tính số điều kiện của ma trận | Features |
Convolve | Trả về tích chập tuyến tính, rời rạc của hai vector | Products |
Copy | Trả về một bản sao của ma trận/vector được cung cấp | Manipulations |
CopyIndicatorBuffer | Lấy dữ liệu của bộ đệm chỉ báo được chỉ định với số lượng xác định vào một vector | Initialization |
CopyRates | Lấy chuỗi lịch sử của cấu trúc MqlRates của biểu đồ-kỳ được chỉ định với số lượng xác định vào ma trận hoặc vector | Initialization |
CopyTicks | Lấy các tick từ cấu trúc MqlTick vào ma trận hoặc vector | Initialization |
CopyTicksRange | Lấy các tick từ cấu trúc MqlTick vào ma trận hoặc vector trong phạm vi ngày được chỉ định | Initialization |
CorrCoef | Tính hệ số tương quan Pearson (hệ số tương quan tuyến tính) | Products |
Correlate | Tính tương quan chéo của hai vector | Products |
Cov | Tính ma trận hiệp phương sai | Products |
CumProd | Trả về tích lũy của các phần tử ma trận/vector, bao gồm cả theo trục được chỉ định | Statistics |
CumSum | Trả về tổng lũy của các phần tử ma trận/vector, bao gồm cả theo trục được chỉ định | Statistics |
Derivative | Tính giá trị đạo hàm của hàm kích hoạt và ghi chúng vào vector/ma trận được truyền | Machine learning |
Det | Tính định thức của một ma trận vuông khả nghịch | Features |
Diag | Trích xuất một đường chéo hoặc xây dựng một ma trận đường chéo | Manipulations |
Dot | Tích vô hướng của hai vector | Products |
Eig | Tính giá trị riêng và vector riêng bên phải của một ma trận vuông | Transformations |
EigVals | Tính giá trị riêng của một ma trận tổng quát / | Transformations |
Eye | Trả về một ma trận với các số một trên đường chéo và số không ở các vị trí khác | Initialization |
Fill | Điền một ma trận hoặc vector hiện có với giá trị được chỉ định | Initialization |
Flat | Truy cập một phần tử ma trận thông qua một chỉ số thay vì hai | Manipulations |
Full | Tạo và trả về một ma trận mới được điền với giá trị đã cho | Initialization |
GeMM | Phương thức GeMM (Nhân Ma trận Tổng quát) thực hiện phép nhân tổng quát của hai ma trận | Products |
HasNan | Trả về số lượng giá trị NaN trong ma trận/vector | Manipulations |
Hsplit | Chia một ma trận theo chiều ngang thành nhiều ma trận con. Tương tự Split với axis=0 | Manipulations |
Identity | Tạo một ma trận đơn vị với kích thước được chỉ định | Initialization |
Init | Khởi tạo ma trận hoặc vector | Initialization |
Inner | Tích trong của hai ma trận | Products |
Inv | Tính nghịch đảo nhân của một ma trận vuông khả nghịch bằng phương pháp Jordan-Gauss | Solutions |
Kron | Trả về tích Kronecker của hai ma trận, ma trận và vector, vector và ma trận hoặc hai vector | Products |
Loss | Tính giá trị hàm mất mát và ghi chúng vào vector/ma trận được truyền | Machine learning |
LstSq | Trả về nghiệm bình phương tối thiểu của các phương trình đại số tuyến tính (cho ma trận không vuông hoặc suy biến) | Solutions |
LU | Thực hiện phân rã LU của một ma trận: tích của một ma trận tam giác dưới và một ma trận tam giác trên | Transformations |
LUP | Thực hiện phân rã LUP với hoán vị từng phần, tức là phân rã LU chỉ với hoán vị hàng: PA=LU | Transformations |
MatMul | Tích ma trận của hai ma trận | Products |
Max | Trả về giá trị lớn nhất trong ma trận/vector | Statistics |
Mean | Tính trung bình cộng của các giá trị phần tử | Statistics |
Median | Tính trung vị của các phần tử ma trận/vector | Statistics |
Min | Trả về giá trị nhỏ nhất trong ma trận/vector | Statistics |
Norm | Trả về chuẩn của ma trận hoặc vector | Features |
Ones | Tạo và trả về một ma trận mới được điền toàn số một | Initialization |
Outer | Tính tích ngoài của hai ma trận hoặc hai vector | Products |
Percentile | Trả về phân vị được chỉ định của các giá trị phần tử ma trận/vector hoặc theo trục được chỉ định | Statistics |
PInv | Tính nghịch đảo giả của một ma trận bằng phương pháp Moore-Penrose | Solutions |
Power | Nâng một ma trận vuông lên lũy thừa nguyên | Products |
Prod | Trả về tích của các phần tử ma trận/vector, cũng có thể thực hiện theo trục được chỉ định | Statistics |
Ptp | Trả về phạm vi giá trị của ma trận/vector hoặc của trục ma trận được chỉ định | Statistics |
QR | Tính phân rã QR của một ma trận | Transformations |
Quantile | Trả về phân vị được chỉ định của các giá trị phần tử ma trận/vector hoặc theo trục được chỉ định | Statistics |
Rank | Trả về hạng ma trận bằng phương pháp Gaussian | Features |
RegressionMetric | Tính chỉ số hồi quy dưới dạng sai số lệch từ đường hồi quy được xây dựng trên mảng dữ liệu được chỉ định | Statistics |
Reshape | Thay đổi hình dạng của ma trận mà không thay đổi dữ liệu | Manipulations |
Resize | Trả về một ma trận mới với hình dạng và kích thước đã thay đổi | Manipulations |
Row | Trả về một vector hàng. Ghi vector vào hàng được chỉ định | Manipulations |
Rows | Trả về số lượng hàng trong ma trận | Features |
Set | Đặt giá trị cho một phần tử vector theo chỉ số được chỉ định | Manipulations |
Size | Trả về kích thước của vector | Features |
SLogDet | Tính dấu và logarit của định thức của một ma trận | Features |
Solve | Giải một phương trình ma trận tuyến tính hoặc hệ phương trình đại số tuyến tính | Solutions |
Sort | Sắp xếp tại chỗ | Manipulations |
Spectrum | Tính phổ của một ma trận dưới dạng tập hợp các giá trị riêng từ tích AT*A | Features |
Split | Chia một ma trận thành nhiều ma trận con | Manipulations |
Std | Trả về độ lệch chuẩn của các giá trị phần tử ma trận/vector hoặc theo trục được chỉ định | Statistics |
Sum | Trả về tổng của các phần tử ma trận/vector, cũng có thể thực hiện theo trục (các trục) được chỉ định | Statistics |
SVD | Phân rã giá trị đơn | Transformations |
SwapCols | Hoán đổi các cột trong ma trận | Manipulations |
SwapRows | Hoán đổi các hàng trong ma trận | Manipulations |
Trace | Trả về tổng dọc theo các đường chéo của ma trận | Features |
Transpose | Chuyển vị (hoán đổi các trục) và trả về ma trận đã sửa đổi | Manipulations |
Tri | Xây dựng một ma trận với các số một trên đường chéo được chỉ định và bên dưới, số không ở các vị trí khác | Initialization |
TriL | Trả về một bản sao của ma trận với các phần tử phía trên đường chéo thứ k bị đặt về 0. Ma trận tam giác dưới | Manipulations |
TriU | Trả về một bản sao của ma trận với các phần tử phía dưới đường chéo thứ k bị đặt về 0. Ma trận tam giác trên | Manipulations |
Var | Tính phương sai của các giá trị phần tử ma trận/vector | Statistics |
Vsplit | Chia một ma trận theo chiều dọc thành nhiều ma trận con. Tương tự Split với axis=1 | Manipulations |
Zeros | Tạo và trả về một ma trận mới được điền toàn số không | Initialization |