2016-06-03 13 views
0

Ich habe diese Textdatei, die Spalten mit verschiedenen aufgezeichneten Werten hat, wo die erste Spalte von Werten der Zeit und Spalten 2, 3 und 4 von Position x, y und z, wo, wenn ich Zeit gegen seine Position von x, y, oder z zeichnete, es gezeigt wird, um zu oszillieren.Python - Plotten Fourier-Transformation aus Textdatei

Ich möchte Fourier-Transformation von diesen Daten nehmen und es grafisch darstellen, wo die x-Achse Frequenz ist.

Ich habe Probleme mit Beispielen aus anderen Posts, also kann mir vielleicht jemand Rat geben, in die richtige Richtung zu gehen.

meine Textdatei hat,

with open('SampleData.txt') as f: 
    data = f.read() 
data = data.split('\n') 


t = [float(row.split()[0]) for row in data] 
x1 = [float(row.split()[1]) for row in data] 

Jetzt verwenden, die numpy Funktion der Fourier-Transformation, habe ich keine Ahnung, wo von dort aus gehen.

+0

Was oszilliert? Was meinst du mit Zeit, was mit Position x? Bitte seien Sie genauer und poste ein Beispiel Ihrer Datei. Meine Antwort spiegelt nun wider, was ich dachte, dass du gefragt hast, aber ... – Dalen

Antwort

1
from matplotlib.pyplot import * 
import numpy 

spectrum =numpy.fft.fft(x1) 
spectrum = abs(spectrum[:len(spectrum)/2]) # Just first half of the spectrum, as the second is the negative copy 
figure() 
plot(spectrum) 
show() 

Ich werde die Antwort nach Ihren Bedürfnissen bearbeiten, da Ihre Frage nicht sehr klar ist.

1

schnelle Fourier-Transformationen in Numpy sind ziemlich einfach:

fft = np.fft.fft(x) 

Sehen Sie hier, um weitere Informationen - Link

Plotten eine einfache Linie ist einfach zu:

import matplotlib.pyplot as plt 
plt.plot(fft) 

Sehen Sie hier mehr - Click

Edit - Liest möglicherweise Ihre Dateien auf eine effizientere Weise - numpy hat einen Textleser, der Ihnen ein wenig Zeit und Mühe spart. Click Im Wesentlichen;

x = np.loadtxt(fname, dtype=<type 'float'>, delimiter=None)