В матлабе уже давно всё работает, матлаб вообще превосходно заточен для матричных операций. Если точнее, то делаю алгоритм обучения Restricted Boltzmann Machine.
Вкратце алгоритм таков:
- Получаем на входе множество строк, которые надо выбрать из столбцов (А, В, Е, Х....)
- Для каждого столбца считаем сумму элементов в строках (А, В, Е, Х....). Данная операция равноценна умножению бинарного вектора Х [0,1] на матрицу. Обычно вектор довольно разряженный, т.е. количество единиц меньше половины но никаких закономерностей нет.
- Потом получаем множество столбцов и повторяем операцию, только суммируем элементы в строках. Данная операция равноценна умножению вектора на транспонированую матрицу.
Допустим у нас есть вектор и матрица:
Код
[ 0, [ A B C
1, D E F
1, G H I
0] J K L ]
Тогда результатом будет вектор [ D+G , E+H, F+I ]
Надеюсь, понятно обьяснил. Из этих двух операций и состоит 75% алгоритма. После чего следует поэлементное сложение чисел в матрице, т.е. к каждому элементу добавляется некое число, положительное или отрицательное.