Таблицы и матрицы это разные вещи. Таблица - это список из векторов одной длины. Сравните с R, где есть data.frame и matrix. Таблицы в mql5 вроде даже не анонсированы пока.
Таблица - наверное список из векторов, но при этом там разные типы чисел, а в матрице одинаковые - не вижу другой разницы - подскажите, пожалуйста.
Даже в справке написано "Матрица — двумерный массив чисел типа double, float или complex.".
Таблица - наверное список из векторов, но при этом там разные типы чисел, а в матрице одинаковые - не вижу другой разницы - подскажите, пожалуйста.
Даже в справке написано "Матрица — двумерный массив чисел типа double, float или complex.".
Первая ваша задача решалась бы в R через as.factor() для data.frame, но не для matrix. Или вы используете R совсем не понимая его сути?
Хранение данных в таблицах - это стандарт в МО. Матрицы - это прежде всего формулы и алгоритмы линейной алгебры.
Первая ваша задача решалась бы в R через as.factor() для data.frame, но не для matrix. Или вы используете R совсем не понимая его сути?
Хранение данных в таблицах - это стандарт в МО. Матрицы - это прежде всего формулы и алгоритмы линейной алгебры.
Я R использую только в режиме пользователя чужих наработок - а по сути только один скрипт.
Что касается массив\матрица - то принципиальной разницы нет, за исключением действительно дополнительных операций над матрицами, которые по заявлению разработчика должны быть быстрее, чем просто работа с массивом, вот это преимущество я и хочу использовать.
Допустим сравнение выполнить через вычитание одной матрицы из другой... есть ли в этом смысл в плане скорости - в этом вопрос.
1) Я R использую только в режиме пользователя чужих наработок - а по сути только один скрипт.
2) Что касается массив\матрица - то принципиальной разницы нет
Очевидно, (2) вытекает из (1). Если хоть немного углубитесь в R, то различие станет очевидным.
В R векторные вычисления для столбцов таблиц имеют смысл, поскольку они намного быстрее цикла. В mql5 разницы не будет, поэтому вряд ли таблицы когда-нибудь в нём появятся. Хотя, с другой стороны, если заявлено нативное МО, то они должны быть.
Допустим сравнение выполнить через вычитание одной матрицы из другой... есть ли в этом смысл в плане скорости - в этом вопрос.
Если в mql5, то сильно сомневаюсь в выигрыше перед обычным двойным циклом. Скорее наоборот - вычитание будет всегда совершаться за полный цикл, а поэлементное сравнение будет прерываться при первом неравном элементе.
Ниже перечислены все методы матриц и векторов в алфавитном порядке.
Функция | Действие | Категория |
---|---|---|
Вычисляет значения функции активации и записывает в переданный вектор/матрицу. | ||
Возвращает индекс максимального значения | ||
Возвращает индекс минимального значения | ||
Возвращает отсортированный индекс | ||
Вычисляет средневзвешенное значение значений матрицы/вектора | ||
Вычисляет разложение Холецкого | ||
Ограничивает элементы матрицы/вектора заданным диапазоном допустимых значений | ||
Возвращает вектор-столбец. Записывает вектор в указанный столбец | ||
Возвращает количество столбцов в матрице | ||
Сравнивает элементы двух матриц/векторов с заданной точностью | ||
Сравнивает элементы двух матриц/векторов на совпадение с точностью значащих цифр | ||
Вычисляет условное число матрицы | ||
Возвращает дискретную линейную свертку двух векторов | ||
Возвращает копию заданной матрицы/вектора | ||
Вычисляет коэффициент корреляции Пирсона (линейный коэффициент корреляции) | ||
Вычисляет кросс-корреляцию двух векторов | ||
Вычисляет ковариационную матрицу | ||
Возвращает кумулятивное произведение элементов матрицы/вектора, включая элементы вдоль заданной оси | ||
Возвращает кумулятивную сумму элементов матрицы/вектора, включая элементы вдоль заданной оси | ||
Вычисляет значения производной активационной функции и записывает в переданный вектор/матрицу | ||
Вычисляет детерминант квадратной невырожденной матрицы | ||
Извлекает диагональ или строит диагональную матрицу | ||
Скалярное произведение двух векторов | ||
Вычисляет собственные значения и правые собственные векторы квадратной матрицы | ||
Вычисляет собственные значения общей матрицы | ||
Возвращает матрицу с единицами на диагонали и нулями в других местах | ||
Заполняет существующую матрицу или вектор заданным значением | ||
Позволяет обращаться к элементу матрицы через один индекс вместо двух | ||
Создает и возвращает новую матрицу, заполненную заданным значением | ||
Горизонтальное разделение матрицы на несколько подматриц. То же самое, что Split с axis=0 | ||
Создает единичную матрицу указанного размера | ||
Инициализация матрицы или вектора | ||
Внутреннее произведение двух матриц | ||
Вычисляет (мультипликативную) обратную квадратной невырожденной матрицы методом Жордана-Гаусса | ||
Возвращает произведение Кронекера двух матриц, матрицы и вектора, вектора и матрицы или двух векторов | ||
Вычисляет значения функции потерь и записывает в переданный вектор/матрицу | ||
Возвращает решение линейных алгебраических уравнений по методу наименьших квадратов (для неквадратных или вырожденных матриц) | ||
LU-факторизация матрицы как произведения нижней треугольной матрицы и верхней треугольной матрицы | ||
Факторизация LUP с частичной перестановкой, которая относится к разложению LU только с перестановкой строк: PA=LU | ||
Матричное произведение двух матриц | ||
Возвращает максимальное значение в матрице/векторе | ||
Вычисляет среднее арифметическое значений элементов | ||
Вычисляет медиану элементов матрицы/вектора | ||
Возвращает минимальное значение в матрице/векторе | ||
Возвращает норму матрицы или вектора | ||
Создает и возвращает новую матрицу, заполненную единицами | ||
Вычисляет внешнее произведение двух матриц или двух векторов | ||
Возвращает указанный процентиль значений элементов матрицы/вектора или элементов вдоль указанной оси | ||
Вычисляет псевдообратную матрицу методом Мура-Пенроуза | ||
Возводит квадратную матрицу в целочисленную степень | ||
Возвращает произведение элементов матрицы/вектора, которое также может быть выполнено для заданной оси | ||
Возвращает диапазон значений матрицы/вектора или заданной оси матрицы | ||
Вычисляет qr-факторизацию матрицы | ||
Возвращает указанный квантиль значений элементов матрицы/вектора или элементов вдоль указанной оси | ||
Возвращает ранг матрицы с помощью метода Гаусса | ||
Вычисляет регрессионную метрику как ошибку отклонения от линии регрессии, построенной на указанном массиве данных | ||
Изменение формы матрицы без изменения ее данных | ||
Возвращает новую матрицу с измененной формой и размером | ||
Возвращает вектор-строку. Записывает вектор в указанную строку | ||
Возвращает количество строк в матрице | ||
Возвращает размер вектора |
| |
Вычисляет знак и логарифм определителя матрицы | ||
Решает линейное матричное уравнение или систему линейных алгебраических уравнений | ||
Сортировка по месту | ||
Вычисляет спектр матрицы как набор ее собственных значений из произведения AT*A | ||
Разделение матрицы на несколько подматриц | ||
Возвращает стандартное отклонение значений элементов матрицы/вектора или элементов вдоль заданной оси | ||
Возвращает сумму элементов матрицы/вектора, которая также может быть выполнена для заданной оси (осей) | ||
Сингулярное разложение значений | ||
Меняет местами столбцы в матрице | ||
Меняет местами строки в матрице | ||
Возвращает сумму по диагоналям матрицы | ||
Транспонирует (меняет оси местами) и возвращает измененную матрицу | ||
Строит матрицу с единицами на заданной и ниже диагоналях и нулями в других местах | ||
Возвращает копию матрицы с обнуленными элементами над k-й диагональю. Нижнетреугольная матрица | ||
Возвращает копию матрицы с обнуленными элементами ниже k-й диагонали. Верхнетреугольная матрица | ||
Вычисляет дисперсию значений элементов матрицы/вектора | ||
Вертикальное разделение матрицы на несколько подматриц. То же самое, что Split с axis=1 | ||
Создает и возвращает новую матрицу, заполненную нулями |

- www.mql5.com
В последних билдах MT5 появилась поддержка "Матриц" и "Векторов". Обещается ускорение работ за счет этих методов.
Я в алгоритмах на матрицах совсем не смыслю, но очень хочется ускорить свой код.
Есть прикладные задачи, которые надеюсь решить с помощью матричных вычислений.
1. Задача по классификации чисел.
У нас есть таблица с числами - выборка (жирным - индекс столбцов), есть таблица с приделами, попадая в которые цифра относится к какому либо классу. Нужно применить правила из таблицы с приделами так, что бы получилась таблица с результатами классификации - смотрите ниже.
Таблица №1 с числами - выборка.
Таблица №2 с приделами.
Таблица №3 с результатами классификации выборки.
2. Задача по вычислению процента принадлежности чисел из таблицы с результатами классификации к числу (целевой), присвоенному каждой строке. Для простоты будет два числа (0 и 1) ниже в таблице показаны вместе столбцы таблицы с результатами классификации и числом (целевой) - таблица с выборкой. В результате вычислений мы должны получить процент каждой (0 и 1) целевой для каждого класса каждого столбца в отдельности.
Таблица №4 с выборкой.
Таблица №5 с результатами вычислений процента принадлежности классов к целевой.
3 Задача по расчету процента заполнения классом каждого столбца выборки.
Даны данные в таблице 4, но теперь нужно посчитать, какой процент занимает каждый класс внутри столбца во всей выборке, т.е. относительно числа информативных строк таблицы - у нас 10 строк в примере. На выходе ожидается таблица с результатами вычислений процента откликов классов ко всей таблице (выборке). .
Таблица №6 с результатами вычислений процента откликов классов ко всей таблице (выборке).
Вот такие 3 задачи, в реальности таблицы с изначальными данными очень большие.
Сейчас эти задачи я решаю проходом по каждой ячейки массива таблицы, что очень затратно, может есть способ ускорить процесс вычислений за счет применения матриц/векторов?
Думаю, что эти задачи параллелятся хорошо, и можно как то применить OpenCL - так же интересно и такое решение - особенно вычисление на графической карте.
Добавил файлы с таблицами, кто хочет посчитать...
конечно на лицо проблемы с формулировками и постановкой задач :-)
в п.1 можно применить матрицы и вектора (если именно в этом самоцель), если классификацию представить как некую функцию (матричную, полином) от x. Итоговый класс = целая часть.
но если данные и диапазоны заранее отсортированы, то секс с матрицами ненужен. И так всё очень быстро O(1) - начальный класс 1, бежим по массиву значений, если значение выше порога, берём следующий класс и увеличиваем порог
Очевидно, (2) вытекает из (1). Если хоть немного углубитесь в R, то различие станет очевидным.
В R векторные вычисления для столбцов таблиц имеют смысл, поскольку они намного быстрее цикла. В mql5 разницы не будет, поэтому вряд ли таблицы когда-нибудь в нём появятся. Хотя, с другой стороны, если заявлено нативное МО, то они должны быть.
Так и тут заявлялось, что матрицы и вектора будут быстрей, чем перебор массивов - отсюда и интерес к этой теме.
Если в mql5, то сильно сомневаюсь в выигрыше перед обычным двойным циклом. Скорее наоборот - вычитание будет всегда совершаться за полный цикл, а поэлементное сравнение будет прерываться при первом неравном элементе.
Тема для того, что бы проверить, но нужно понять, как алгоритмически это сделать.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В последних билдах MT5 появилась поддержка "Матриц" и "Векторов". Обещается ускорение работ за счет этих методов.
Я в алгоритмах на матрицах совсем не смыслю, но очень хочется ускорить свой код.
Есть прикладные задачи, которые надеюсь решить с помощью матричных вычислений.
1. Задача по классификации чисел.
У нас есть таблица с числами - выборка (жирным - индекс столбцов), есть таблица с приделами, попадая в которые цифра относится к какому либо классу. Нужно применить правила из таблицы с приделами так, что бы получилась таблица с результатами классификации - смотрите ниже.
Таблица №1 с числами - выборка.
Таблица №2 с приделами.
Таблица №3 с результатами классификации выборки.
2. Задача по вычислению процента принадлежности чисел из таблицы с результатами классификации к числу (целевой), присвоенному каждой строке. Для простоты будет два числа (0 и 1) ниже в таблице показаны вместе столбцы таблицы с результатами классификации и числом (целевой) - таблица с выборкой. В результате вычислений мы должны получить процент каждой (0 и 1) целевой для каждого класса каждого столбца в отдельности.
Таблица №4 с выборкой.
Таблица №5 с результатами вычислений процента принадлежности классов к целевой.
3 Задача по расчету процента заполнения классом каждого столбца выборки.
Даны данные в таблице 4, но теперь нужно посчитать, какой процент занимает каждый класс внутри столбца во всей выборке, т.е. относительно числа информативных строк таблицы - у нас 10 строк в примере. На выходе ожидается таблица с результатами вычислений процента откликов классов ко всей таблице (выборке). .
Таблица №6 с результатами вычислений процента откликов классов ко всей таблице (выборке).
Вот такие 3 задачи, в реальности таблицы с изначальными данными очень большие.
Сейчас эти задачи я решаю проходом по каждой ячейки массива таблицы, что очень затратно, может есть способ ускорить процесс вычислений за счет применения матриц/векторов?
Думаю, что эти задачи параллелятся хорошо, и можно как то применить OpenCL - так же интересно и такое решение - особенно вычисление на графической карте.
Добавил файлы с таблицами, кто хочет посчитать...