Ankündigung

Einklappen
Keine Ankündigung bisher.

FFT in Excel

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • ichse1
    Registrierter Benutzer
    • 23.05.2002
    • 1514

    FFT in Excel

    Hallo,

    Angenommen ich habe eine Excel Liste und möchte diese Fourier transformieren. Es geht um eine Beschleunigungsmessung, also zwei Spalten, erste Spalte Zeit, zweite Spalte Beschleunigung.
    Wie macht man sowas?
    Ich hab eine FFT Funktion in Excel gefunden. Die nutzt aber nur eine Spalte zur Berechnung. Das ist doch Blödsinn, oder?

    Gibt's vielleicht eine andere (seeehr günstige) Software die auf die Exceldaten zugreifen kann?

    Vielleicht hat ja der Eine oder Andere damit schon Erfahrung gemacht. Würde mich sehr über eure Hilfe freuen.

    Vielen, vielen Dank im Voraus!
    mfg Stefan
  • hreith
    Registrierter Benutzer
    • 31.07.2004
    • 608

    #2
    Hi Stefan,

    für eine FFT benötigt man nicht notwendigerweise die Zeit.
    Man geht ja davon aus, dass die Zeitabstände gleichmäßig sind und benötigt also nur noch die realen und immaginären Werte. Das kann man dann in den Frequenzbereich umrechnen, wobei die "Abtastfrequenz" eben der Kerwert der Zeitabstände ist. In den eigentlichen Formeln kürtzt sich also die Zeit und Frequenz sowieso raus. Es bleiben dann nur die Multiplikatoren übrig.
    Ansonsten benötigt eine FFT in der Regel auch ein n^2 Werte lange Tabelle. Wenn deine nicht 2,4,8,16..... Werte lang ist, dann muss man die entweder in dieser Form bringen oder eben die normale FT (also ohne das Fast) verwenden.

    Kommentar

    • helli
      Registrierter Benutzer
      • 02.06.2006
      • 877

      #3
      sollte die abtastfrequenz nicht konstant sein nuetzt die fft nichts, weil die zugrundeliegende faktorisierung nicht funktionieren kann.
      eine linearisierung der zeitpunkte durch interpolation fuehrt zu zusaetzlichen oberwellen im signal (um die es ja wahrscheinlich gerade geht), weshalb man die daten am besten in eine software exportieren sollte, die fuer solche vorgaenge besser geeignet ist (zb matlab)...

      Kommentar

      • derbene
        Registrierter Benutzer
        • 28.11.2011
        • 4

        #4
        FFT mit Excel?

        Hallo!
        Ich stehe vor folgendem Problem:
        Ein Datenlogger zeichnet mir Beschleunigung (in allen drei Achsen) über die Zeit auf - mit einem festen Intervall von 0,5ms. Diese fasst er zu sog. Events zusammen, die aber unterschiedlich lang sind (min. 30ms, max. 900ms - mit 30ms-Intervallen dazwischen).
        So habe ich z.B. ein Event, das 90ms insgesamt dauert und dazu je 180 gemessene Werte der Beschleunigung in g für X, Y und Z Achse.
        Kann ich daraus jetzt mit möglichst einfachen Mitteln die Frequenzen ermitteln? Bisher scheitert es ja schon daran, dass Excel bei einer fft Datensätze mit einer Anzahl einer 2er-Potenz fordert, was bei 180 ja schon nicht geht - oder stehe ich bereits hier auf dem Schlauch?
        Ein zweiter Schritt wäre dann, eine Art Analyseverfahren zu erstellen, mit dem man dann mehrere (oder viele) Events hinsichtlich bestimmter Merkmale (Frequenz oder max. g-Ausschlag) filtern kann.
        Ist sowas mit Excel möglich oder braucht es dazu andere Programme?

        Vielen Dank vorab für erste Hilfen!

        Kommentar

        • Laudio
          Registrierter Benutzer
          • 20.11.2007
          • 232

          #5
          www.sagemath.org
          und falls nicht gleichmäßig gesampelt wird: http://en.wikipedia.org/wiki/Least-s...ctral_analysis

          hf
          dong dong beat beat dong dong rhyme rhyme

          Kommentar

          • derbene
            Registrierter Benutzer
            • 28.11.2011
            • 4

            #6
            sorry, ich glaub es scheitert bereits am einrichten... virtual box runterladen und dann die 1,4gb sage ausführen?

            Kommentar

            • Laudio
              Registrierter Benutzer
              • 20.11.2007
              • 232

              #7
              Jup, ist doch np.
              dong dong beat beat dong dong rhyme rhyme

              Kommentar

              • fabi
                Registrierter Benutzer
                • 05.01.2008
                • 1467

                #8
                FreeMat

                Kommentar

                • derbene
                  Registrierter Benutzer
                  • 28.11.2011
                  • 4

                  #9
                  Hi!
                  Danke für die beiden Empfehlungen.
                  Sowohl für freemat als auch für sagemath benötigt man einfache Programmierkenntnisse, richtig?

                  Noch zur Info: Mit "gleichmäßigem Sampeln" ist eine gleichmäßige Abtastrate gemeint, oder? Das wäre bei mir ja gegeben, da alle 0,5ms Werte für X, Y, Z Achse gespeichert werden. Problem nur: es gibt nie eine Werteanzahl als 2er-Potenz. Die Events sind wie gesagt schon ein Vielfaches von 30ms und 30ms haben 60 Werte...

                  Kommentar

                  • fabi
                    Registrierter Benutzer
                    • 05.01.2008
                    • 1467

                    #10
                    Ja, du benötigst etwas Code um damit eine FFT zu machen. Einfacher wirds aber kaum werden.

                    hreith hat alles schon gesagt, aber: Im Zeitbereich gibt es nur reale Werte. Die Momentanauslenkung (bzw. ihre Ableitung davon als Beschleunigung) kann man "mit einem Lineal messen". Das Zeitsignal MUSS rein real sein damit die FFT sinnvolle Ergebnisse liefert.

                    0,5ms entspricht einer Samplingrate von 2Hz. fs/2 ist also 1Hz. Nutze irgendeine Fensterfunktion (z.B. Hanning). FFT lohnt sich immer, Zeropadding. Wenn du also 220 Werte hast, füll hinten mit Nullen auf bis du bei 265 Werten bist. Davon die FFT ergibt 265 Werte im Frequenzbereich. Davon ist die zweite Hälfte (f > fs/2 oder negativ) sinnlos (Aliasingfrequenzen), dafür haben die ersten 128 Werte Real- und Imaginärteil bzw. Betrag und Phase.

                    Selbst bei der Untersuchung von Rumpelgeräuschen von Zügen arbeitet man wenigstens mit Samplingraten um 100Hz. Was du da mißt ist wohl eher als Quasistatische Beschleunigung anzusehen.

                    Kommentar

                    • juergen_e
                      Registrierter Benutzer
                      • 09.09.2003
                      • 440

                      #11
                      Zitat von fabi Beitrag anzeigen
                      265
                      256 *räusper*

                      Kommentar

                      • fabi
                        Registrierter Benutzer
                        • 05.01.2008
                        • 1467

                        #12
                        äh, ja.

                        Kommentar

                        • derbene
                          Registrierter Benutzer
                          • 28.11.2011
                          • 4

                          #13
                          Selbst bei der Untersuchung von Rumpelgeräuschen von Zügen arbeitet man wenigstens mit Samplingraten um 100Hz. Was du da mißt ist wohl eher als Quasistatische Beschleunigung anzusehen.
                          Also im Prinzip sinnlos? Der Datenlogger soll die Belastung von Transportgütern messen. Ob diese Belastung nun aus Vibration (Rauschen?) besteht oder als Schläge (Schock?) passiert, ist erstmal "egal" bzw. ist Bestandteil der Untersuchung.
                          Fraglich für mich ist allerdings:
                          Wenn der Logger ein Event misst (weil eine Achse einen bestimmten g-Wert erreicht hat -> Triggerschwelle) und dieses Event sagen wir die maximale Länge von 900ms erreicht, reicht diese Länge überhaupt aus, um Frequenzen zwischen 15 und 50 Hz verlässlich darzustellen? Denn diese Frequenzen treten ja z.B. als "typische" Frequenzen einer Lkw-Karosse auf.
                          Bei den bisherigen Messungen habe ich eben festgestellt, dass manche Events 900ms erreichen, die meisten aber deutlich kürzer sind. Hinzu kommt, dass meist ein Abstand zwischen den Events von 0,5s bis mehrere Sekunden auftritt, ich also auch nicht einfach mehrere Events zusammenfassen dürfte (um dann ein mehrere Sekunden dauerndes Events zu haben).

                          Und noch was zum prinzipiellen Vorgehen:
                          Kann ich erstens um dieses Auffüllen mit 0-Werten irgendeinen Bogen machen? Beim Auswerten von 400 unterschiedlich langen Events müsste ich ja jedes einzeln anschauen und bis zur nächsten 2er Potenz "auffüllen".

                          0,5ms entspricht einer Samplingrate von 2Hz.
                          Meinst du nicht 2kHz?

                          Und: es scheitert bei mir wohl schon am simplen Einlesen von Werten in die Programme - egal welches Aus meinem Programm kann ich in eine *.xls Datei exportieren. Wenn ich das in *.csv umwandeln will, so gibt er mir die einzelnen Achsen mit ";" getrennt aus, da die einzelnen Werte ja "Komma-Werte" sind z.B. 3,05 [g]...

                          Kommentar

                          • fabi
                            Registrierter Benutzer
                            • 05.01.2008
                            • 1467

                            #14
                            oweh, ich sollte so spät wohl nichts mehr schreiben und jetzt probier ich es doch wieder. Lass dich nicht verwirren, ja, 2kHz, das ist eine sinnvolle Abtastrate und 1kHz obere Grenzfrequenz ist völlig okay für Beschleunigungsaufnehmer.

                            Dann ist das doch ziemlich straight-forward. Du kannst jetzt wählen, welche Frequenzauflösung du haben willst. Zeropadding ist nichts unanständiges. Nutze ein konstant langes FFT Fenster und schreibe da jeweils die Samples rein, die du auswerten willst. Das Zeitsignal wird jeweils Hanning-gefenstert bei 50% overlap, dann verlierst du keine Daten und erfasst nichts zweimal. Das ergibt dann ein zeitabhängiges Spektrum. Das ist ziemlich sicher interessant, weil es ja die Art des Events characterisiert.

                            Beispiel: Dein Signal ist 300 Samples lang. Jetzt nimmst du die ersten 100 davon und multiplizierst sie mit einem hanning-window. (Beim ersten und letzten ist ein half-hanning die bessere wahl).Dann schreibst du sie in ein 512 langes Array, wovon der Rest Nullen sind. FFT! Dann nimmst du Sample 51 bis 150, mulitplizierst sie mit dem Hanning window, ins Array, FFT... etc. Die Spektren kannst du dir dann in Abhängigkeit von der Zeit angucken. Alle 100 Samples hast du jetzt ein Spektrum, das du - so gewollt - auch als Farbfläche oder 3D-Diagramm anschauen kannst.

                            csv-Dateien sind ideal. Beachte, dass im englischen die Kommastellen durch Punkt getrennt sind. Semikolon als Datengrenze geht klar. Mit csvread('filename.csv') kannst du das Array in Freemat laden.


                            Die Frequenzauflösung ist immer der Kehrwert der Periodendauer deines FFT-Arrays. In den 100 Samples Beispiel muss die Frequenz eben einmal vollständig durchlaufen sein, dann kann sie die FFT auch darstellen. Du kannst beide Werte beliebig verändern. Du hast die freie Wahl zwischen Frequenz- oder Zeitauflösung. Beides gleichzeitig gibts leider nicht. Wenn dein Logger nach 5 Samples schonwieder zur Ruhe kommt, auch okay, dann war auch offensichtlich nichts tieffrequentes dabei. Der Trigger muss natürlich so gesetzt sein, dass er bei tieffrequenten Signalen nicht innerhalb der Periode unterschritten wird.

                            Wenn du nur den Durschschnitt der Spektren (in dem Fall PSD) haben willst gibt es in Matlab und Octave (keine Ahnung ob in Freemat) den Welch Algorithmus, der im Prinzip genau macht was ich oben beschrieben hab.
                            http://www.mathworks.de/help/toolbox...ef/pwelch.html

                            Schönen Abend!
                            (ps, hoffentlich hab ich heut weniger Unfug geschrieben. )

                            Kommentar

                            Lädt...
                            X