diff --git a/fluents/lib/engines.py b/fluents/lib/engines.py index fc3e002..821dc2b 100644 --- a/fluents/lib/engines.py +++ b/fluents/lib/engines.py @@ -17,8 +17,16 @@ def pca(a, aopt, scale='scores', mode='normal'): """ m, n = a.shape - u, s, vt = svd(a, full_matrices=0) - eigvals = (1./m)*s + + if m*10.>n: + v, s, ut = dot(a.T, a) + s = sqrt(s) + eigvals = s + u = u.T + vt = v.T + else: + u, s, vt = svd(a, full_matrices=0) + eigvals = (1./m)*s T = u*s T = T[:,:aopt] P = vt[:aopt,:].T