Я ищу быструю библиотеку SVD, в C, C ++ или Java. В конечном итоге я использую Java, но мне очень удобно использовать jna для переноса c ++, например http://github.com/hughperkins/jeigen
Я ищу быструю библиотеку SVD, которая будет обрабатывать разреженные матрицы. Чтобы сохранить эту цель, чтобы вопрос не был помечен как слишком субъективный, скажем:
Я осмотрел несколько библиотек и обнаружил:
По сути, я ищу библиотеку, которая дает примерно ту же скорость и среднеквадратическую ошибку проекции, что и Matlab, или, по крайней мере, несколько сопоставимую.
По моему опыту, svdlibc — лучшая библиотека этих опций. Ранее я немного покопался в его коде, и я не верю, что он вычисляет полную S-матрицу (то есть это действительно «тонкий SVD»). Если вы можете управлять представлением матрицы на диске, svdlibc работает намного быстрее при использовании разреженного двоичного формата ввода из-за значительно меньших издержек ввода-вывода.
Пакет S-Space предоставил исполняемая банка вокруг SVDLIBJ Java-порт SVDLIBC. Тем не менее, они обнаружили, что он дал результаты, отличные от SVDLIBC для определенных решений ввода.
Других решений пока нет …