Если кратко, то вектор — это одномерный массив типа double, матрица — двумерный массив типа double. Векторы бывают вертикальные и горизонтальные, но в MQL5 они не разделяются.
Матрицы можно представить как массив горизонтальных векторов, где первый индекс матрицы означает номер строки, а второй индекс — номер столбца.
//Пример:
matrix matrix_a={{10,3,2},{1,8,12},{6,5,4},{7,11,9}};
Print("matrix_a\n",matrix_a);
vector cols_max=matrix_a.ArgMax(0);
vector rows_max=matrix_a.ArgMax(1);
ulong matrix_max=matrix_a.ArgMax();
Print("cols_max=",cols_max);
Print("rows_max=",rows_max);
Print("max index ",matrix_max," max value ",matrix_a.Flat(matrix_max));
/*
matrix_a
[[10,3,2]
[1,8,12]
[6,5,4]
[7,11,9]]
cols_max=[0,3,1]
rows_max=[0,2,0,1]
max index 5 max value 12.0
*/
或者查看 MatrixSetValues 文章,一切尽收眼底。
明白了,谢谢,它最终就像一个二维数组。
老实说,我很困惑,这里 有说明1 和说明 2,第一种变体是根据文章进行的,但第二种变体什么都没有重现。还是说我没有复制,可以绕过数组从二进制文件向矩阵读取数据?
第二个链接就有这样的解决方案。
void matrix .FromFile(const int rows, condt int cols, const int file_handle, const int count=-1, const int offset=0)
从文件
根据文本或二进制文件中的数据创建矩阵
就写在介绍中
Если кратко, то вектор — это одномерный массив типа double, матрица — двумерный массив типа double. Векторы бывают вертикальные и горизонтальные, но в MQL5 они не разделяются.
Матрицы можно представить как массив горизонтальных векторов, где первый индекс матрицы означает номер строки, а второй индекс — номер столбца.
与线性代数不同,只有行和列的编号是从零开始的,就像在数组中一样。
第二个链接有这个解决方案。
void matrix .FromFile(const int rows, condt int cols, const int file_handle, const int count=-1, const int offset=0)
从文件
根据文本或二进制文件中的数据创建矩阵
尚未实现
导言中写道
很难想象哪些是字面意思,哪些是抽象意思....
尚未实施
明白了,让我们等待....当然,最好能以读取 bin 文件的相同方式进行,即有不同的填充--需要什么,然后从矩阵所在的特定位置指定...
我不明白,矩阵是一个二维数组,对吗?
我想找出 这个数组中某一列的最大值,我得看看说明。
坐标应该只有两位数,我怎么能理解三位数和四位数呢?
还有,最后我怎么才能得到某一列的最大值?
为什么我必须重新打开终端才能清除矩阵?
本质--编写代码--填充矩阵--打印矩阵结果--运行脚本--注释矩阵填充--运行脚本--用旧值打印矩阵。
导言中写道
那么,在图片中,你可以把编号从 00、01、02....第一行,这样就更清楚了。