Power sepctral Density mit numpy

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
gierschi@python
User
Beiträge: 2
Registriert: Donnerstag 19. Mai 2016, 17:52

Hallo,

ich habe als Rohdaten ein 2D Feld mit einer turbulenten Windgeschwindigkeitskomponente u(y,x) und möchte hierfür das Leistungsdichtespektrum berechnen und darstellen (Gitterweite jeweils 2.5 m und Ausdehnung in x und y Richtung 640m). Zur Überprüfung, ob alles geklappt hat, berechne ich anschließend das Integral des Spektrums, welches nach meinem Kenntnisstand die Varianz der Größe u(x,y) ergeben müsste. Mein bisheriger Ansatz mit numpy sieht wie folgt aus:

Code: Alles auswählen

psd     = (np.abs(np.fft.fft2(u[:,:])))**2 
psd2   =  np.mean(psdfff,axis=0)                    #Mittelung der PSD's entlang y

freqs = np.fft.fftfreq(257,2.5)                      #Bestimmung der zugehörigen frequenzen (Einheit cycles/m) 
idx   = np.argsort(freqs)

plt.loglog(freqs[idx],psd2[idx])                 # plotten. Die Form des spetrums entspricht gut theoretischen Überlegungen (Kolmogorov Spektrum)

variance = scipy.integrate.simps(psd2[idx],x=freqs[idx])        #Varianz über Integration des Spektrums

u_var  = np.var(u[:,:])            #Varianz über np.var
In meinem Fall unterscheiden sich die Varianzen beträchtlich. Jemand eine Idee??

Vielen Dank im Voraus
Zuletzt geändert von Anonymous am Donnerstag 19. Mai 2016, 22:33, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
gierschi@python
User
Beiträge: 2
Registriert: Donnerstag 19. Mai 2016, 17:52

Hat es was mit der skalierung zu tun?

vgl. http://stackoverflow.com/questions/2359 ... o-scale-it ??
Antworten