Guten Morgen, ich habe eine Druckkurve einer Pumpe aufgenommen und möchte nun über den Datensatz eine FFT jagen (Raspberry PI, Python). Funktioniert auch, nur das Problem ist, dass die y-Achse falsch oder garnicht skaliert ist (Amplitunden im Bereich von 10^6???). Meine Frage ist, wie ich nun die Achse skalieren kann. Zudem ist am Anfang des Plots ein riesiger Peak zu erkennen? Was hat der da zu suchen? Kann ich den Peak entfernen, indem ich einen Filter (Hoch-/Tiefpass) auf die Daten erst anwende? Oder erstmal den Mittelwert subtrahieren? Ich bitte um Tipps. Viele Grüße Max
Gast
#6133872
Lass das doch mal über einen schönen Sinus (mit einer Frequenz die schön mittig in einem Bin landet) laufen. Dann siehst du ja wo die Amplitude landet und kannst auf Fehlersuche gehen. Wir können das mangels Code ja nicht.
Gast
#6133877
Max U. schrieb: > Kann ich den Peak entfernen, indem ich einen Filter > (Hoch-/Tiefpass) auf die Daten erst anwende? Der bei 0Hz sollte logischerweise durch einen Hochpass verschwinden ja. Die Frage ist, ob du das wirklich willst. Wenn dich der DC Anteil nicht interessiert, kannst du den ja immernoch einfach nicht-auswerten. Max U. schrieb: > Oder erstmal den Mittelwert > subtrahieren? Das wäre ein Hochpass, ja.
mb schrieb: > Lass das doch mal über einen schönen Sinus (mit einer Frequenz die schön > mittig in einem Bin landet) laufen. > > Dann siehst du ja wo die Amplitude landet und kannst auf Fehlersuche > gehen. > > Wir können das mangels Code ja nicht.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
Also das ist der Code. Hier ist sogar die y-Achse des Zeitsignlas skaliert. Was ist der Unterschied zwischen einem Hochpass (also direkt aus der Library) und der MEthode wenn ich per Hand den Mittelwert berechne und dann vom Datensatz abziehe? Es sind doch prinzipiell zwei identische verfahren? Gibt es da irgenwelche Vor-/ bzw. Nachteile?
Gast
#6133930
Max U. schrieb: > Was ist der Unterschied zwischen einem Hochpass (also direkt aus der > Library) und der MEthode wenn ich per Hand den Mittelwert berechne und > dann vom Datensatz abziehe? Mittelwert subtrahieren wäre ein idealer HP mit einer Grenzfrequenz von 0Hz. Entfernt also wirklich nur genau die DC-Komponente und fasst das Signal ansonsten nicht an. Was der HP der Library macht weiß ich nicht, aber ich vermute mal dass es da eher um die Simulation eines realen Hochpasses geht, d.h. Grenzfrequenz != 0 und mit einer begrenzten Steilheit von soundso vielen dB pro Dekade. Der würde dann auch niederfrequente Anteile reduzieren.
Gast
#6133937
Interessehalber: kannst du deine Daten in numerischer Form posten (CSV o. ä)?
Gast
#6133942
Btw. dein Signal hat einen Mittelwert von grob 4 und du hast etwas über 10*10^5 Samples. Komplett aufsummiert also etwa 4*10^6 Die Amplitude deines DC bins ist...? Da fehlt also offensichtlich eine Normierung.
mb schrieb: > Btw. dein Signal hat einen Mittelwert von grob 4 und du hast etwas über > 10*10^5 Samples. Komplett aufsummiert also etwa 4*10^6 > > Die Amplitude deines DC bins ist...? > > Da fehlt also offensichtlich eine Normierung. Genau das ist ja die Frage. Wie bekomme ich diese Normierung hin? Ich habe mal bisschen recherchiert und gelesen, dass ich noch durch den Faktor N teilen muss, um die physikalisch korrekte NOrmierung hinzubekommen. Wobei
1 | |
ist. Und dann nachher beim plotten
1 | |
Dann kriege jedoch folgenden Fehler:
1 | |
2 | |
3 | |
4 | |
Was ist denn hier fehlerhaft? Oder sind meine Überlegungen falsch? Wie würdet Ihr die Skalierung vornehmen?
Gast
#6134068
Da steht's doch: Max U. schrieb: > slice indices must be integer Aber Max U. schrieb: > len (amplitude)/2+1 Spuckt halt nicht zwingend eine ganze Zahl aus, das musst du im Zweifel z.B. durch int() erzwingen. Man kann doch nicht aus kleinen Programmierfehlern gleich schließen, dass der Ansatz falsch ist, hör mal... So kommt man doch auf nix.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
