2013-03-24 2 views
1

Я пытаюсь найти основные компоненты очень больших размерных данных (~ 20 000). Функция princomp, которая поставляется с MATLAB, занимает слишком много времени (~ 10 секунд) для вычисления. Мне было интересно, есть ли более быстрые способы сделать это. Я искал mex реализаций этого алгоритма, пока не повезло.Самый быстрый способ сделать PCA в MATLAB для очень больших размерных данных (princomp слишком медленно)

Благодаря

+0

вам нужно все из них? – bla

+0

Используйте propack lansvd. –

+0

@natan Я бы хотел использовать по крайней мере первые несколько основных компонентов. – anirudhr

ответ

-1

Попробуйте использовать только инструкции, которые вы хотите, чтобы вычислить PCA, например:

[V E] = eig(cov(X)); 
[E S] = sort(diag(E),'descend'); 
V = V(:,S); 
+1

Использование '[V E] = eig (cov (X));' занимает столько же времени. – anirudhr

+0

eig занимает больше времени, чем svd –

+0

@MinLin: Можете ли вы поддержать свое утверждение с помощью любой ссылки или моделирования? – tashuhka