Was Sie also suchen, wäre etwas wie dieses in python
y numpy
(Ich habe mir die Freiheit genommen, den Text nicht "direkt zu übersetzen". matlab
-Code zu python
y numpy
Stattdessen habe ich es ein wenig umgestaltet, damit es sich mehr anfühlt. pythonic
[Natürlich kann eine ganz ähnliche Umstrukturierung auch auf die matlab
-Code auch]):
import numpy as np
def _cas(D):
"""Center at mean and standardize."""
return (D- D.mean(1)[:, None])/ (D.shape[1]- 1)** .5
def example(D):
"""Eigenvalues and -vectors, based on SVD."""
u, s, v= np.linalg.svd(D, full_matrices= False);
return np.diag(s)** 2, u
if __name__ == '__main__':
data= np.random.rand(5, 20)
data= _cas(data) # preprocess data according to your requirements
eigenvals, eigenvecs= example(data)
print eigenvals
print eigenvecs
Aber Sie haben ein Leistungsproblem damit?
Können Sie jetzt genauer sagen, wie hoch Ihre derzeitige Leistung ist und inwieweit Sie wirklich erwarten, dass sie verbessert werden sollte? FTIW in meinem bescheidenen Computer, eine zufällige (500, 20000) Matrix wird die Ausführung von example(.)
etwa 20 Sek.
Ich kann (dank grundlegender linearer Algebra) die Ausführungszeit trivialerweise auf etwa 2,5 Sekunden reduzieren (eine fast 10-fache Verbesserung)! Wenn Sie nun eine viel bessere Leistung als diese suchen, dann erläutern Sie bitte sehr viel detaillierter die "Natur" Ihrer data
!
Woher stammen Ihre Daten? Was ist Ihr spezieller Fall, in dem Sie die berechneten Eigenwerte und -vektoren verwenden wollen, d.h. was ist Ihr Hauptziel, das Sie erreichen wollen?