FFT an einer CSV-Datei
Verfasst: Donnerstag 7. Mai 2020, 14:09
Ich versuche mich gerade an einer Noise-Reduktion mit einem FFT. Mein Sensor ist ein MPU6050 und um "Laborwerte" zu erzeugen habe ich jedes mal verschieden frequente Töne in der unmittelbaren Nähe zum Sensor abgespielt. Sensor und Smartphone lagen fixiert auf der selben Tischplatte. Macht eventuell mein Versuchsaufbau schon legitime Ergebnisse unmöglich? Jedes mal 60000 Messungen in 60 Sekunden. Bei 400 Hz erhalte ich folgendes Ergebnis:

Den Code habe ich aus einem Tutorial und an meine Anforderungen angepasst. Die Theorie habe ich verstanden denke ich, aber ob der Code so stimmt ist mir nicht so klar. Ich weiß man kommentiert Codes eigentlich nicht so, aber ich habe es am Anfang gebraucht um zu verstehen was wo passiert. Der Code folgt unter diesem Abschnitt. Ich habe bei jeder Messung dieses "Grundrauschen" bei 15 Hz, aber kann das ein Ergebnis sein? Dann müssten doch diese Messfehler periodisch sein. Und ob ich die beiden Auschläge bei 390 Hz und 410 Hz als Erfolg verbuchen kann ist mir auch unsicher.
Ich hoffe ich konnte rüberbringen was meine Probleme sind. Hätte man mich vor drei Tagen gefragt was Fourier ist, hätte ich wahrscheinlich geraten ein neues Modell von Peugeot deswegen lasst ein bisschen Nachsicht walten. Vielen Dank im Vorraus. 

Den Code habe ich aus einem Tutorial und an meine Anforderungen angepasst. Die Theorie habe ich verstanden denke ich, aber ob der Code so stimmt ist mir nicht so klar. Ich weiß man kommentiert Codes eigentlich nicht so, aber ich habe es am Anfang gebraucht um zu verstehen was wo passiert. Der Code folgt unter diesem Abschnitt. Ich habe bei jeder Messung dieses "Grundrauschen" bei 15 Hz, aber kann das ein Ergebnis sein? Dann müssten doch diese Messfehler periodisch sein. Und ob ich die beiden Auschläge bei 390 Hz und 410 Hz als Erfolg verbuchen kann ist mir auch unsicher.
Code: Alles auswählen
import matplotlib.pyplot as plt
from scipy.fftpack import fft
import numpy as np
import pandas as pd
Fs = 1000 # Hz Sampling Frequency
t = np.arange(0,60,1/Fs)
data = pd.read_csv('D:\Python\MessungenLabor\Daten7.csv', sep=',', usecols=["Messung","ZBeschleunigung"])
x = data.ZBeschleunigung.values
x = x - np.mean(x)
plt.subplot(2,1,1)
plt.plot(t,x); plt.title('Beschleunigungssensor Daten');
plt.xlabel('Time(s)'); plt.ylabel('Amplitude in g')
# generate frequency axis
n = np.size(t)
fr = (Fs/2)*np.linspace(0, 1, int(n/2))
#compute FFT
X = fft(x)
X_m = (2/n)*abs(X[0:int(n/2)])
plt.subplot(2,1,2)
plt.plot(fr, X_m)
plt.tight_layout()
plt.show()
