- 整数型
- 浮動小数点数型(double、float)
- 복소수(complex)
- 文字列型
- 構造体、クラス、インターフェイス
- 動的配列オブジェクト
- 行列とベクトル
- 型キャスト
- Void 型とNULL 定数
- ユーザー定義型
- オブジェクトポインタ
- 参照: 修飾子「 & 」とキーワード「 this 」
매트릭스와 벡터
Type벡터는 벡터 작업을 가능하게 하는 MQL5의 특수 데이터 유형입니다. 벡터는 double 타입의 1차원 배열입니다. 벡터는 물리학, 기하학 등 많은 과학 분야에서 사용되는 선형 대수의 기본 개념 중 하나입니다. 벡터는 3D 그래픽 및 기타 응용 분야에서 선형 방정식 시스템을 푸는 데 사용됩니다. 벡터는 더해지고 곱해질 수 있습니다. 벡터 사이의 길이 또는 거리는 Norm을 통해 얻을 수 있습니다. 프로그래밍에서 벡터는 일반적으로 정규 벡터 연산이 없는 동종 요소의 배열로 표현됩니다 즉, 배열을 더하거나 곱할 수 없는 경우, norm이 없는 경우.
벡터는 행렬로 작업할 때 행 벡터와 문자열 벡터로 나타낼 수 있습니다. 또한 선형 대수학의 벡터는 공분산과 반공분산의 개념을 사용합니다. 이러한 개념은 MQL5 코드를 작성할 때 아무런 차이가 없습니다. 프로그래머만 벡터 유형의 각 객체가 무엇인지 결정하기 때문입니다. 예를 들어, 3D 그래픽의 회전, 변위 또는 압축 벡터의 경우입니다.
일반적으로 선형 대수학의 관점에서 볼 때 숫자도 벡터이지만 1차원 벡터 공간에 있습니다. 벡터 자체는 행렬의 특수한 경우로 간주할 수 있습니다.
Yypematrix는 행렬을 나타내는 MQL5의 또 다른 특수 데이터 유형입니다. 행렬은 실제로 double 유형의 2차원 배열입니다. 특정 유형의 데이터 세트에 대한 더 쉬운 작업을 위해 벡터와 행렬이 MQL5에 도입되었습니다. 이를 통해 개발자는 단순하고 수학과 같은 형태로 선형 대수의 이점을 얻을 수 있습니다. Matrix는 선형 또는 미분 방정식 시스템을 간결하게 작성하기 위해 사용할 수 있습니다. 행렬 행의 수는 방정식의 수에 해당하고 열의 수는 미지수와 같습니다. 결과적으로 선형 방정식은 행렬 연산을 통해 풀 수 있습니다.
행렬에 대해 다음 대수 연산이 정의됩니다:
- 동일한 크기의 행렬 추가
- 적합한 크기 행렬의 곱셈: 왼쪽 행렬의 열 개수는 오른쪽 행렬의 행 개수와 같아야 합니다.
- 열 벡터로 행렬 곱하기 행렬 곱셈 규칙에 따라 행 벡터를 행렬로 곱합니다. 이러한 관점에서 벡터는 행렬의 특수한 경우입니다.
- 숫자, 즉 스칼라로 행렬 곱하기
수학은 다양한 행렬 유형을 고려합니다. 예를 들어 단위 행렬, 대칭, 비대칭 대칭, 상부 및 하부 삼각 행렬 및 기타 유형이 있습니다. 다양한 정규형은 행렬 이론에서 중요한 역할을 합니다. 그것들은 특정 변환을 통해 얻을 수 있는 행렬의 특정 표준 형식을 나타냅니다. 실제로는 안정성과 같은 추가 속성이 있는 일반 형식이 사용됩니다.
벡터와 행렬을 사용하거나 관련 유형의 특수 메서드를 사용하면 수학 표기법에 가까운 더 간단하면서 간결하고 명확한 코드를 생성할 수 있습니다. 이러한 방법을 사용하면 중첩 루프를 생성하거나 계산시 배열의 올바른 인덱싱을 염두에 둘 필요가 없습니다. 따라서 이러한 방법을 사용하면 복잡한 프로그램을 개발할 때 안정성과 속도가 향상됩니다.
행렬 및 벡터 메서드 목록
Typesmatrix 그리고벡터는 넘파이 라이브러리 메서드에 해당하는 메서드를 포함합니다. 이러한 방법을 사용하면 최소한의 노력으로 알고리즘과 코드를 Python에서 MQL5로 변환할 수 있습니다. 많은 데이터 처리 작업, 수학 방정식, 신경망 및 기계 학습 작업은 이미 만들어진 Python 메서드와 라이브러리를 사용하여 해결할 수 있습니다.
메서드 matrix/vector |
NumPy의 Analogous 메서드 |
설명 |
---|---|---|
void matrix.Eye(const int rows, const int cols, const int ndiag=0) |
대각선에 1이 있고 다른 곳에 0이 있는 행렬 구성 |
|
void matrix.Identity(const int rows) |
주대각선에 1이 있는 정사각 행렬을 구성합니다. |
|
void matrix.Ones(const int rows, const int cols) |
1로 채워진 주어진 행과 열의 새로운 행렬을 구성합니다. |
|
void matrix.Zeros(const int rows, const int cols) |
0으로 채워진 주어진 행과 열로 새로운 행렬을 구성합니다. |
|
void matrix.Full(const int rows, const int cols, const scalar value) |
스칼라 값으로 채워진 주어진 행과 열의 새 행렬을 구성합니다. |
|
void matrix.Copy(const matrix a) |
주어진 행렬의 복사본을 구성합니다. |
|
void matrix.FromBuffer(const int rows, const int cols, const scalar array[], const int count=-1, const int offset=0) |
1차원 배열에서 생성된 행렬 생성 |
|
void matrix.FromFile(const int rows, condt int cols, const int file_handle, const int count=-1, const int offset=0) |
텍스트 또는 이진 파일의 데이터에서 행렬 구성 |
|
void vector.FromString(const string source, const string sep=" ") |
문자열의 텍스트 데이터에서 초기화된 벡터 생성 |
|
void vector.Arange(const scalar start, const scalar stop, const scalar step=1) |
주어진 간격 내에서 균일한 간격의 값 생성 |
|
void matrix.Diag(const vector v, const int ndiag=0) |
대각 행렬 추출 또는 대각 행렬 구성 |
|
void matrix.Tri(const int rows, const int cols, const int ndiag=0) |
주어진 대각선 아래에 1이 있고 다른 곳에 0이 있는 행렬을 구성합니다. |
|
void matrix.Tril(const int rows, const int cols, const scalar array[], const int ndiag=0) |
k번째 대각선 위의 요소가 0인 행렬의 복사본을 반환합니다. |
|
void matrix.Triu(const int rows, const int cols, const scalar array[], const int ndiag=0) |
k번째 대각선 아래의 요소가 0인 행렬의 복사본을 반환합니다. |
|
void matrix.Vander(const vector v, const int cols=-1, const bool increasing=false) |
방데르몽드 행렬 생성 |
|
vector matrix.Row(const unsigned nrow) |
|
행 벡터 반환 |
vector matrix.Col(const unsigned ncol) |
|
열 벡터 반환 |
unsigned matrix.Rows() |
|
행렬의 행 수 반환 |
unsigned matrix.Cols() |
|
행렬의 열 수를 반환 |
void matrix.Init() |
|
행렬 초기화 |
matrix matrix.Transpose() |
행렬의 축을 반전시키거나 치환합니다; 수정된 행렬을 반환 |
|
matrix matrix.Dot(const matrix b) |
두 행렬의 내적 |
|
matrix matrix.Inner(const matrix b) |
두 행렬의 내적 |
|
matrix matrix.Outer(const matrix b) |
두 행렬의 외적 계산 |
|
matrix matrix.MatMul(const matrix b) |
두 행렬의 행렬 곱 |
|
matrix matrix.MatrixPower(const int power) |
정방 행렬을 (정수) 거듭제곱 n으로 올립니다. |
|
matrix matrix.Kron(const matrix b) |
두 행렬의 크로네커 곱 반환 |
|
bool matrix.Cholesky(matrix& L) |
촐레스키 분해 반환 |
|
bool matrix.QR(matrix& Q, matrix& R) |
행렬의 qr 분해 계산 |
|
bool matrix.SVD(matrix& U, matrix& V, vector& singular_values) |
특이값 분해 |
|
bool matrix.Eig(matrix& eigen_vectors, vector& eigen_values) |
정방 행렬의 고유값 및 오른쪽 고유 벡터 계산 |
|
bool matrix.EigH(matrix& eigen_vectors, vector& eigen_values) |
에르미트 행렬의 고유값과 고유 벡터를 반환합니다. |
|
bool matrix.EigVals(vector& eigen_values) |
일반 행렬의 고유값 계산 |
|
bool matrix.EigValsH(vector& eigen_values) |
에르미트 행렬의 고유값 계산 |
|
bool matrix.LU(matrix& L, matrix& U) |
|
하부 삼각 행렬과 상부 삼각 행렬의 곱으로 행렬의 LU 분해 |
bool matrix.LUP(matrix& L, matrix& U, matrix& P) |
|
행 순열만 있는 LU 분해를 참조하는 부분 피벗을 사용한 LUP 분해: PA=LU |
double matrix.Norm(const norm) |
행렬 또는 벡터 norm 반환 |
|
double matrix.Cond(const norm) |
행렬의 조건 번호 계산 |
|
vector matrix.Spectrum() |
|
행렬의 스펙트럼을 곱 AT*A의 고유값 집합으로 계산합니다. |
double matrix.Det() |
배열의 행렬식 계산 |
|
int matrix.Rank() |
가우스 방법을 사용하여 배열의 행렬 순위 반환 |
|
int matrix.SLogDet(int& sign) |
배열 행렬식의 부호와 로그 계산 |
|
double matrix.Trace() |
행렬의 대각선을 따라 합을 반환합니다. |
|
vector matrix.Solve(const vector b) |
선형 행렬 방정식 또는 선형 대수 방정식 시스템 풀기 |
|
vector matrix.LstSq(const vector b) |
선형 대수 방정식의 최소 제곱 해를 반환합니다(비제곱 또는 축퇴 행렬의 경우). |
|
matrix matrix.Inv() |
행렬의 (승법) 역행렬 계산 |
|
matrix matrix.PInv() |
무어-펜로즈 방법으로 행렬의 의사 역행렬 계산 |
|
int matrix.Compare(const matrix matrix_c, const double epsilon) int matrix.Compare(const matrix matrix_c, const int digits) int vector.Compare(const vector vector_c, const double epsilon) int vector.Compare(const vector vector_c, const int digits) |
|
지정한 정밀도로 두 행렬/벡터의 요소를 비교 |
double matrix.Flat(const ulong index) bool matrix.Flat(const ulong index,const double value) |
두 개 대신 하나의 인덱스를 통해 행렬 요소의 주소 지정 허용 |
|
double vector.ArgMax() double matrix.ArgMax() vector matrix.ArgMax(const int axis) |
최대값의 인덱스를 반환 |
|
double vector.ArgMin() double matrix.ArgMin() vector matrix.ArgMin(const int axis) |
최소값의 인덱스를 반환 |
|
double vector.Max() double matrix.Max() vector matrix.Max(const int axis) |
행렬/벡터의 최대값을 반환 |
|
double vector.Mean() double matrix.Mean() vector matrix.Mean(const int axis) |
요소 값의 산술 평균 계산 |
|
double vector.Min() double matrix.Min() vector matrix.Min(const int axis) |
행렬/벡터의 최소값을 반환 |
|
double vector.Sum() double matrix.Sum() vector matrix.Sum(const int axis) |
행렬/벡터 요소의 합을 반환. 주어진 축(축)에 대해서도 수행할 수 있음 |
|
void vector.Clip(const double min_value,const double max_value) void matrix.Clip(const double min_value,const double max_value) |
행렬/벡터의 요소를 유효한 값의 지정한 범위로 제한 |
|
vector vector.CumProd() vector matrix.CumProd() matrix matrix.CumProd(const int axis) |
주어진 축을 따르는 요소를 포함하여 행렬/벡터 요소의 누적 곱을 반환합니다. |
|
vector vector.CumSum() vector matrix.CumSum() matrix matrix.CumSum(const int axis) |
주어진 축을 따르는 요소를 포함하여 행렬/벡터 요소의 누적 합계를 반환합니다. |
|
double vector.Prod(const double initial=1) double matrix.Prod(const double initial=1) vector matrix.Prod(const int axis,const double initial=1) |
주어진 축에 대해서도 수행할 수 있는 행렬/벡터 요소의 곱을 반환 |
|
void matrix.Reshape(const ulong rows, const ulong cols) |
데이터를 변경하지 않고 행렬의 모양 변경 |
|
void matrix.Resize(const ulong rows,const ulong cols) |
모양과 크기가 변경된 새 행렬을 반환 |
|
bool matrix.SwapRows(const ulong row1, const ulong row2) |
|
행렬의 행 바꾸기 |
bool matrix.SwapCols(const ulong col1, const ulong col2) |
|
행렬의 열 바꾸기 |
double vector.Ptp() double matrix.Ptp() vector matrix.Ptp(const int axis) |
Max() - Min()에 해당하는 행렬/벡터 또는 지정된 행렬 축의 값의 범위를 반환 |
|
double vector.Percentile(const int percent) double matrix.Percentile(const int percent) vector matrix.Percentile(const int percent,const int axis) |
지정된 축을 따라 행렬/벡터 요소 또는 요소 값의 지정된 백분위수를 반환 '퍼센트' 매개변수의 유효한 값은 [0, 100] 범위에 있습니다. |
|
double vector.Quantile(const int percent) double matrix.Quantile(const int percent) vector matrix.Quantile(const int percent,const int axis) |
지정된 축을 따라 행렬/벡터 요소 또는 요소 값의 지정된 분위수를 반환 '퍼센트' 매개변수는 [0, 1] 범위의 값을 사용합니다. |
|
double vector.Median() double matrix.Median() vector matrix.Median(const int axis) |
행렬/벡터 요소의 중앙값을 계산. 중앙값은 배열/벡터 요소의 상위 절반을 요소의 하위 절반과 구분하는 중간 값입니다. |
|
double vector.Average() double matrix.Average() vector matrix.Average(const int axis) |
행렬/벡터 값의 산술 평균을 계산. 분모의 가중치의 합은 0이 될 수 없지만 일부 가중치는 0이 될 수 있습니다. |
|
double vector.Std() double matrix.Std() vector matrix.Std(const int axis) |
주어진 축을 따라 행렬/벡터 요소 또는 요소 값의 표준 편차를 반환. |
|
double vector.Var() double matrix.Var() vector matrix.Var(const int axis) |
행렬/벡터 요소 값의 분산을 계산 |
|
double vector.CorrCoef(const vector& v) matrix matrix.CorrCoef() |
피어슨 상관 계수(선형 상관 계수)를 계산. 상관 계수는 [-1, 1] 범위에 있습니다. |
|
vector vector.Correlate(const vector& v,enum mode) |
두 벡터의 상호 상관을 계산. 'mode' 매개변수는 선형 컨볼루션 계산 모드를 결정합니다. |
|
vector vector.Convolve(const vector& v, enum mode) |
두 벡터의 이산 선형 컨볼루션을 반환합니다. 'mode' 매개변수는 선형 컨볼루션 계산 모드를 결정합니다. |
|
matrix matrix.Cov() matrix vector.Cov(const vector& v); (resulting matrix 2 x 2) |
공분산 행렬을 계산. 두 표본(두 랜덤 변수)의 공분산은 선형 종속성을 측정한 것입니다. |