2013-10-08 2 views
0

Я использую MATLAB для декомпозиции собственных значений, а размер данных составляет около 10000, поэтому матрица ковариации равна 10000*10000. Когда я использую функцию eig() в MATLAB, она очень медленная. Есть ли способ ускорить разложение по собственным значениям. Я использую разложение по собственным значениям для анализа основных компонент (PCA), поэтому я просто использую верхние K собственных значений и собственных векторов. Нет необходимости получать все собственные значения и собственные векторы. Я попытался использовать Intel-MKL для собственного декомпозиции, но когда я использую интерфейс mex, есть некоторые ошибки. Я разместил его в ссылке https://stackoverflow.com/questions/19220271/how-to-use-intel-mkl-for-speed-my-own-matlab-mex-cpp-applicationsКак ускорить собственное разложение C++

Пожалуйста, дайте мне несколько советов, спасибо.

ответ

1

использовать eigs если ваши данные разрежены или вас интересуют первые k значения. Например, eigs(A,k) возвращает k наибольших собственных значений. Обратите внимание, что eigs будет быстрее только для первых нескольких собственных значений и будет медленнее для k> некоторого значения (возможно, 5 ...)

+0

Хорошо, спасибо. Но я хочу использовать C++, потому что MATLAB не является бесплатным. – mining

+1

так изменить название ... – bla

+0

MKL не является бесплатным ни для исследовательских, ни для коммерческих целей. – kangshiyin

Смежные вопросы