FFT mit Daten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
01detlef
User
Beiträge: 105
Registriert: Montag 10. Mai 2010, 21:59

Hallo,

also ich habe jetzt wirklich viel herumprobiert, aber ich verstehe nicht, wieso immer angesagt wird, dass
name 'numpy' is not defined

Code: Alles auswählen

fobj = open("woerterbuch.txt", "r")
for line in fobj: 
    print line 
fobj.close()
Das läuft wunderbar, aber bei dem Code mit loadtxt wird immer der Fehler angezeigt:

Code: Alles auswählen

a = np.loadtxt(datei, skiprows=2, ...)
mfg
01detlef
User
Beiträge: 105
Registriert: Montag 10. Mai 2010, 21:59

ahh man muss

import numpy

machen!
01detlef
User
Beiträge: 105
Registriert: Montag 10. Mai 2010, 21:59

Code: Alles auswählen

import numpy 
   
datei = 'sinus.txt'
a = numpy.loadtxt(datei, skiprows=2)
res=numpy.fft.fft(a[1])
Ich habe nun den folgenden Code und der läuft auch soweit, nur habe ich ein Problem. Die Datei wird geladen und dann wird glaub ich nur vom letzten Wert die FFT berechnet. Also habe ich an eine Schleife gedacht, aber ich weiss gerade nicht, wie ich so die Werte einzelnd ansprechen kann, so dass ich dann die FFT anwenden kann?!

mfg
BlackJack

@01detlef: Was meinst Du mit "letztem" Wert? Du greifst auf den Index 1 von `a` zu, also auf die zweite Zeile des zweidimensionalen Arrays. Die Zählung beginnt bei 0.

Was hast Du denn vor? Was enthält die Datei für Daten, also was bedeuten die Werte, Zeilen, die Datei als ganzes? Und was möchtest Du als Ergebnis haben?
01detlef
User
Beiträge: 105
Registriert: Montag 10. Mai 2010, 21:59

Hallo,

da liegt wohl mein Fehler. Ich möchte das alle Daten in der zweiten Spalte einer FFT unterzogen werden. In der ersten Spalte ist die Zeit und in der zweiten die y-Werte dazu und davon soll die FFT gemacht werden.

mfg
BlackJack

Dann musst Du jetzt herausfinden wie man die zweite Spalte anspricht. Du lernst wahrscheinlich mehr, wenn Du Dir das selbst erarbeitest. Das sind `numpy`-Grundlagen.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

01detlef hat geschrieben:da liegt wohl mein Fehler. Ich möchte das alle Daten in der zweiten Spalte einer FFT unterzogen werden. In der ersten Spalte ist die Zeit und in der zweiten die y-Werte dazu und davon soll die FFT gemacht werden.
Wenn du statt Zeilen Spalten willst musst du wohl transponieren, da gibts neben einem Attribut vom ndarray sogar ein Argument bei loadtxt für. Alternativ kannst du dich auch durch die Slicing-Syntax von Numpy wurschteln, die ist recht mächtig.
01detlef
User
Beiträge: 105
Registriert: Montag 10. Mai 2010, 21:59

Hallo,

also die Spalte kann ich ja mit usecols : sequence, optional ansprechen, aber das muss ja irgendwie in einer Schleife passieren damit jeder Wert mit der FFT bearbeitet wird oder? Ich habe noch keine Vorstellung wie ich das machen könnte, dass jeder Wert berechnet wird.
BlackJack

@01detlef: Mit dem `usecols`-Argument kannst du beeinflussen welche Spalten aus der Datei geladen werden. Welche bei einem Array im Speicher angesprochen/verwendet werden, kannst Du über die entsprechenden Argumente beim Indexzugriff beeinflussen. Aber wie gesagt, das sind `numpy`-Grundlagen. Du solltest dazu einfach mal ein Tutorial durcharbeiten. Man sollte schon so grundsätzlich verstehen wie die Werkzeuge funktionieren, mit denen man arbeitet.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

01detlef hat geschrieben:Hallo,

also die Spalte kann ich ja mit usecols : sequence, optional ansprechen, aber das muss ja irgendwie in einer Schleife passieren damit jeder Wert mit der FFT bearbeitet wird oder? Ich habe noch keine Vorstellung wie ich das machen könnte, dass jeder Wert berechnet wird.
Ist es wirklich zu viel verlangt transponieren mit leo zu übersetzen und danach in der Doku zu suchen? Irgendwie fühle ich mich gerade etwas veräppelt.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

... außerdem steht eine Möglichkeit zu transponieren bereits in meinem Post - inkl. Erklärung, daß es dazu dient die gewünschte Spalte auszusuchen. Also, die Posts lesen und ggf. nachfragen mußt Du schon machen.

Gruß
Christian
01detlef
User
Beiträge: 105
Registriert: Montag 10. Mai 2010, 21:59

Hallo,

bei einer Sache komme ich aber nicht weiter, weil das schon häufiger aufgetaucht ist. Ich habe einen Beispiel-Code und möchte diesen einfach mal laufen lassen, um mit der plot-Funktion etwas zu machen, aber immer wird dieser Fehler angezeigt:

No module named pylab

Davon gab es schon mehrere Fehlermeldungen mit anderen Modulen. Muss ich diese erst zusätzlich herunterladen?

Code: Alles auswählen

import numpy
import pylab
# Build a vector of 10000 normal deviates with variance 0.5^2 and mean 2
mu, sigma = 2, 0.5
v = numpy.random.normal(mu,sigma,10000)
# Plot a normalized histogram with 50 bins
pylab.hist(v, bins=50, normed=1)       # matplotlib version (plot)
pylab.show()
# Compute the histogram with numpy and then plot it
(n, bins) = numpy.histogram(v, bins=50, normed=1)  # NumPy version (no plot)
pylab.plot(.5*(bins[1:]+bins[:-1]), n)
pylab.show()
mfg
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

01detlef hat geschrieben:Davon gab es schon mehrere Fehlermeldungen mit anderen Modulen. Muss ich diese erst zusätzlich herunterladen?
Wieso stellst du solche Fragen, die du dir eigentlich schon selbst beantwortet hast? Probier es aus! Man, man…
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

01detlef hat geschrieben:Muss ich diese erst zusätzlich herunterladen?
Selbstverständlich. Python hat verdammt viel schon an Bord, aber manche Dinge wollen erst installiert sein. Bzgl. pylab mal unter matplotlib googeln. (Im Übrigen steht auf der Seite, wo Du den Code stiebitzt hast, daß Du matplotlib installieren mußt, wenn Du die Graphiken sehen willst.)

HTH
Christian
Antworten