Hallo zusammen, vorweg: Ich bin neu hier, Forumssuche wurde benutzt, allerdings ist mein Problem vielleicht etwas spezieller. Was ich vorhabe: Ich möchte mithilfe von MATLAB Messdaten, die in der Form "Zeitpunkt in sec" und "Spannungswert in Volt" vorliegen mittels der FFT in den Frequenzbereich transformieren. Soweit so gut. Das klappt auch, allerdings muss mir an entscheidender Stelle das Wissen fehlen. Denn erreichen möchte ich eine Multiplikation im Frequenzbereich mit anderen Messdaten, die ich für die Bestimmung der Übertragungsfunktion eines elektrischen Bauteils aufgenommen habe. Dabei habe ich mehrere einzelne Übertragungsfunktionen durch Messungen in der Form "Frequenz in Hz" und "Komplexe Zahl (einheitenlos)". Einheitenlos, da schon die Übertragungsfunktion zu der passenden Frequenz aus dem Verhältnis des Ausgangsspannungssignals zum Eingangsspannungssignal unter Berücksichtigung der Phasenverschiebung berechnet wurde. Ich habe also zu jeder Frequenz die passende Übertragungsfunktion in Form einer komplexen Zahl. Die Frequenzbereiche habe ich dabei linear durchfahren, es sind immer Frequenzdekaden wie z.B. von 10 kHz bis 100 kHz oder 100 kHz bis 1 MHz. Je nach Dekade bestehen gibt es 201, 1601 oder 2048 Messwerte. Bei den höheren Frequenzen ab 10 kHz sind es immer 2048, da hier die Messungen schneller gingen. An dem Bauteil habe ich an einer Stelle x einen Impuls eingespeist und an den beiden Klemmen des Bauteils die Spannung gemessen. Die Spannung habe ich ebenfalls am Einspeiseort gemessen. Nun möchte ich mittels FFT diese Spannungen in den Frequenzbereich bringen und nachweisen, dass FFT vom Impuls MAL Übertragungsfunktion (Impulsort zu Klemme 1) auch wirklich das Spannungssignal an Klemme 1 ergibt. Schrittfolge wäre also: 1) Übertragungsfunktion in Matlab aus CSV einlesen, man bekommt einen Frequenzvektor der Messung und einen Vektor mit den Werten der komplexen Zahlen zu diesen Frequenzen 2) Die drei Spannungswerte aus der Messung mit dem Oszilloskop einlesen (Impulseinspeiseort, Klemme 1, Klemme 2) 3) Jeweils eine FFT der drei Spannungsmessungen mit dem Oszilloskop, um diese Werte in den Frequenzbereich zu bringen 4) Multiplikation der FFT des Einspeiseorts mit der komplexen Übertragungsfunktion von Einspeiseort zu Klemme 1 5) Inverse FFT dieser Multiplikation 6) Vergleich des Ergebnisses von 5) mit dem gemessenen Spannungsverlauf an Klemme 1 Ich hoffe, dass das verständlich war. Bei mir hakt es nun vor allem zwischen Schritt 3 und 4. Ich benötige durch das Anwenden der FFT exakt die gleichen Frequenzen, wie ich sie durch die Messung der Übertragungsfunktion auch schon habe. Ich bin mir aber unsicher, wie ich das anstellen soll. Ich möchte also gezielt eine FFT machen, die als Ergebnis die komplexen Fourier-Koeffizienten bei exakt den Frequenzen der Übertragungsfunktion bietet, damit ich diese Multiplizieren und anschließend in den Zeitbereich zurücktransformieren kann. Die Übertragungsfunktion hat beispielsweise 2048 Messwerte zwischen 10 kHz und 100 kHz linear aufgeteilt und mit dem Oszilloskop habe ich eine Messung bei 50 ns/ div und einer Betrachtungszeit von 500 ns gemacht. Der Abstand zwischen den Messwerten betrug hierbei 400 ps und die Messung hat 1250 Messwerte, ergibt also eine Abtastrate von 2,5 GHz. Ich danke schon vielmals im Voraus!
M1809 schrieb: > Bei mir hakt es nun vor allem zwischen Schritt 3 und 4. > Ich benötige durch das Anwenden der FFT exakt die > gleichen Frequenzen, wie ich sie durch die Messung > der Übertragungsfunktion auch schon habe. Die FFT setzt m.W. äquidistante Abtastpunkte voraus, und will normalerweise eine glatte Zweierpotenz als Anzahl sehen. Mit anderen Worten: Die ermittelte Übertragungsfunktion ist m.M.n. ein Schuss ins Knie. > Die Übertragungsfunktion hat beispielsweise 2048 Messwerte > zwischen 10 kHz und 100 kHz linear aufgeteilt und mit dem > Oszilloskop habe ich eine Messung bei 50 ns/ div und einer > Betrachtungszeit von 500 ns gemacht. > Der Abstand zwischen den Messwerten betrug hierbei 400 ps > und die Messung hat 1250 Messwerte, ergibt also eine > Abtastrate von 2,5 GHz. ??? 10kHz, 1250 Messwerte und Abtastrate 2.5GHz? Die Zahlen ergeben nicht den geringsten Sinn. Nochmal überprüfen. Abgesehen davon: Ich kenne MATLAB nicht, aber prinzipiell ist eine FFT von 10^6 Messpunkten kein Problem für einen normalen PC. Von den ggf. langen Messzeiten abgesehen kann man also mehrere Dekaden mit einer einzigen FFT abdecken.
Vielen Dank erstmal für die Antwort :) Egon D. schrieb: > M1809 schrieb: > >> Bei mir hakt es nun vor allem zwischen Schritt 3 und 4. >> Ich benötige durch das Anwenden der FFT exakt die >> gleichen Frequenzen, wie ich sie durch die Messung >> der Übertragungsfunktion auch schon habe. > > Die FFT setzt m.W. äquidistante Abtastpunkte voraus, und > will normalerweise eine glatte Zweierpotenz als Anzahl > sehen. > Mit anderen Worten: Die ermittelte Übertragungsfunktion > ist m.M.n. ein Schuss ins Knie. Äquidistante Abtastpunkte wären meiner Meinung nach vorhanden, sowohl bei der linearen Messung der Übertragungsfunktion, aber vor allem für die FFT (oder auch DFT, das macht für mich durch die Computerberechnung nur einen zeitlichen Unterschied) auch bei der Messung mit dem Oszilloskop. Die Übertragungsfunktion ist ja bereits vorhanden und bietet folgende (lineare) Frequenzbereiche: 20 Hz bis 100 Hz mit 201 Datenpunkten 100 Hz bis 1000 Hz mit 1601 Datenpunkten 1 kHz bis 10 kHz mit 1601 Datenpunkten 10 kHz bis 100 kHz mit 2048 Datenpunkten 100 kHz bis 1 MHz mit 2048 Datenpunkten 1 MHz bis 10 MHz mit 2048 Datenpunkten 10 MHz bis 50 MHz mit 2048 Datenpunkten. Bei der Messung mit dem Oszilloskop gibt es folgende Auflösungen pro Div: 100 µs / div, also insgesamt 1 ms Zeitdauer 20 µs / div, also insgesamt 200 µs Zeitdauer 10 µs / div, also insgesamt 100 µs Zeitdauer 1 µs / div, also insgesamt 10 µs Zeitdauer 500 ns / div, also insgesamt 5 µs Zeitdauer 100 ns / div, also insgesamt 1 µs Zeitdauer 50 ns / div, also insgesamt 500 ns Zeitdauer. >> Die Übertragungsfunktion hat beispielsweise 2048 Messwerte >> zwischen 10 kHz und 100 kHz linear aufgeteilt und mit dem >> Oszilloskop habe ich eine Messung bei 50 ns/ div und einer >> Betrachtungszeit von 500 ns gemacht. >> Der Abstand zwischen den Messwerten betrug hierbei 400 ps >> und die Messung hat 1250 Messwerte, ergibt also eine >> Abtastrate von 2,5 GHz. > > ??? > > 10kHz, 1250 Messwerte und Abtastrate 2.5GHz? > Die Zahlen ergeben nicht den geringsten Sinn. > Nochmal überprüfen. > > Abgesehen davon: Ich kenne MATLAB nicht, aber prinzipiell > ist eine FFT von 10^6 Messpunkten kein Problem für einen > normalen PC. Von den ggf. langen Messzeiten abgesehen > kann man also mehrere Dekaden mit einer einzigen FFT > abdecken. Ok, dabei verstehe ich noch nicht genau, woran es hakt. Also genau das ist ja mein Problem, dass es zwei unterschiedliche Systeme sind, die Zusammenzubringen sind. Wichtig ist für mich, dass die gemessenen Dekaden bei den Übertragungsfunktionen linear sind und es eben Dekaden sind. Den Zeitausschnitt bei der Impulseinspeisung habe ich natürlich sinnvoll am Oszilloskop gewählt, sodass der Impuls klar erkennbar ist und dann je nachdem, wie viel nach der Impulseinspeisung noch gesehen werden sollte. Die Abtastfrequenz ist dann eben so hoch. Die 1250 Messwerte ergeben m.M.n. schon Sinn (vermute, es sieht auf den ersten Blick zu wenig aus), wenn man die Betrachtungszeit von 500 ns mit in Betracht zieht. Bisher klingen die Antworten auf mein Vorhaben ja recht niederschmetternd :( Ich hoffe, dass nochmal klar geworden ist, welche Messdaten ich zur Verfügung habe und was ich damit vorhabe. Ich möchte also mit der FFT der Spannungssignale vom Oszi zu jedem Frequenzwert (den es auch in der Übertragungsfunktion gibt) einen komplexen Wert finden, um den komplexen Wert der Übertragungsfunktion bei z.B. Frequenz 10 kHz mit dem komplexen Wert aus der Spannungsmessung und anschließenden FFT oder DFT bei ebenfalls 10 kHz zu multiplizieren und anschließend die inverse FFT oder DFT durchführen zu können.
TL;DR: Interpoliere deine bekannten Koeffizienten im Frequenzraum auf die Frequenzwerte, die sich aus der FFT des Oszi-Signals ergeben. So speziell ist dein Problem glaube ich nicht, der viele Text lässt mich nur vermuten dass du es selber noch nicht 100% durchstiegen hast. Wenn ich richtig verstehe: * Du hast viele Messungen (egal in welchem Sampling) die für 1 exakte Frequenz dein Filterverhalten auf Amplitude und Phase beschreiben. (Die sind überhaupt nicht äquidistant von 20Hz-50MHz, sondern nur je Dekade, damit kann eine simple FFT nix anfangen.) * Du würdest diese gerne zu 1 einzigen gesamten Impulsantwort im Frequenzraum zusammenbasteln * Du hast 1 Oszi-Messung, wo du einen Puls ins System gibst und vorher und nachher den Zeitverlauf darstellen kannst, mit einer gegebenen Samplingrate und Zeitdauer * Dann muss die Übertragungsfunktion nicht nur äquidistant, sondern auch in den exakt gleichen Schritten wie dein Signal gerastert sein. * -> Das müsste durch Interpolieren aber ohne Probleme gehen. Pragmatisch würde ich daher sagen: * Deine zeitliche Messung gibt die sinnvollen Frequenzen vor, aus einem abgetasteten Signal kann man nämlich nicht mehr oder weniger rausholen als einem die FFT gibt. Beschäftige dich am besten nochmal grundsätzlich mit dem hin- und hertransformieren, Nyquist-Frequenz, Aliasing, usw. * Du hast jetzt also eine FFT deines Signals. Für 1250samples @2.5GHz ergibt sich dabei automatisch die höchste auflösbare Frequenz (proportional dt, also 1.25GHz wenn ich richtig liege) und die Frequenzauflösung (proportional T_gesamt, also 1/500ns=2MHz Schritte) * Deine Sammlung von Übertragungswerten (als Datenpaare Frequenz+komplexe Zahl) gibst du in eine Interpolationsfunktion, und wendest die auf dein Array von Frequenzen (Matlab fftfreq) oben an. Möglicherweise muss das separat für Amplitude und Phase der komplexen Zahlen passieren, wird man bestimmt irgendwo finden. * Die Rücktransformation ergibt dir dein Signal gefaltet mit der Impulsantwort, wie gewünscht. Abschließende Gedanken: * Deine gemessenen Frequenz-Übetragungswerte reichen von 20Hz bis 50MHz, warum musstest du dann mit 400ps=2.5GHz samplen um das übertragene Signal gut darzustellen? Da fehlt dir dann für einen Großteil meiner oben beschriebenen Vorgehensweise der passende Koeffizient. * Man könnte stattdessen (ist vielleicht sogar schlauer) aus allen Koeffizienten deiner Übertragungsfunktion (im Frequenzraum) eine Impulsantwort im Zeitraum errechnen. Das gemessene Signal muss damit dann gefaltet werden, was äquivalent ist zu einer Multiplikation im Frequenzraum * Theoretisch wäre auch eine "Fourier-Trafo zu Fuß" möglich, wo du dein gemessenes Signal nicht in harmonische Frequenzen zerlegst wie bei der FT, sondern in jene Frequenzen für die du die Koeffizienten kennst, aber das ist glaube ich eher eine mathematische Übung als eine sinnvolle Herangehensweise * Über die Behandlung von negativen Frequenzen habe ich nicht nachgedacht, aber gut möglich das das hier essentiell ist. Also letztendlich korrektes Anwenden von fftshift und ifftshift * Allg. zu fftshift: auf die richtige Anzahl gepaarter fftshift/ifftshift achten, sonst kriegt man sehr verrückte Signale bei der Rücktransformation.
> FFT vom Impuls MAL Übertragungsfunktion (Impulsort zu Klemme 1) auch
wirklich das Spannungssignal an Klemme 1 ergibt.
Das ist eine Augenoeffner Idee. Aber wenn's denn sein muss. Denn die
Uebertragungsfunktion ist die Fouriertransformierte der
(Delta-)Impulsantwort. Das ist schon von der Definition her so. Was du
auch immer herauskommen kannst sind Nichtidealitaeten.
zB ist dein Puls kein Deltapuls (Amplitude unendlich, laenge Null,
Flaeche Eins). Falls der das denn waere ist dein Bauteil und deine
Messapparatur zerschossen. Diese Definition gilt fuer die
Fouriertransformation.
Wenn man die Fouriertransformation verstanden hat, kann man sich der FFT
zuwenden, welche mancherlei Randbedingungen enthaelt.
Ohne die Theorie verstanden zu haben, hast du Resultate, welche wenig
sinn ergeben.
So ganz nebenbei, moderne Oszilloskope koennen die FFT schon selbst.
Einfach Math funktionen einschalten und die FFT waehlen. Babei gibt's
nur noch das Filter, zB Hamming, und die Amplituden Skalierung als
Einstellmoeglichkeit.
Hallo zusammen und erstmal Danke für die Antworten! Ich habe mich derweil noch einmal intensiv mit der DFT beschäftigt und auch in Matlab alles erstmal soweit hinbekommen, wie ich es wollte. Die Ergebnisse ergeben Sinn und meine Aussage, dass der ganze Frequenzbereich der Übertragungsfunktion aus äquidistanten Messpunkten besteht war natürlich falsch. Was ich mich generell dadurch Frage: Ist es überhaupt möglich, eine Tabelle von komplexen Zahlen, die jeweils bestimmten Frequenzen zugeordnet sind, zu interpolieren? Eine komplexe Zahl besteht nunmal immer aus einem Betrag und einer Phase, ich bin mir unsicher, ob man dort jetzt einfach getrennt Betrag und danach Phase interpolieren kann. Aus dem Bauch heraus würde ich sagen, dass das nicht möglich ist. Mittels Zero-Padding habe ich die Frequenzauflösung auf meine gewünschte Auflösung von 1 Hz gebracht, ohne nennenswerte Veränderungen. Zuvor wurde das Signal mit einem Hanning-Fenster multipliziert mit der gleichen Zahl an Datenpunkten. Das Amplitudensprektrum zeigt vor allem Veränderungen und sichtliche Ausschläge um 1 kHz sowie im Bereich zwischen 55 kHz und 65 kHz. Falls ich die Interpolation nun nicht hinbekomme, weil sie faktisch auch eventuell nicht geht, würde ich als nächsten Ansatz einmal die DFT der Einspeisung auf 1 Hz genau durchführen und dann jeweils einzeln die Übertragungsfunktionen mit dem entsprechenden Teilbereich der DFT multiplizieren. Ich denke gerade darüber nach, ob das Sinn ergibt und man vielleicht anhand der Einzelberechnungen die fertigen Multiplikationen der DFT mit den ÜF dann zusammenfügen kann (Addition oder Multiplikation im Frequenzbereich), um dann anschließend die IFFT zu bilden. Da schaue ich gerade, wie ich dann an den korrekten Zeitvektor bei der Rücktransformation komme. Erstmal danke soweit :)
Dein letzter Absatz klingt wenn ich richtig verstehe also wie eine "stückweise definierte" Übertragungsfunktion. Das sollte prinzipiell gehen, ich denke aber es ist nicht unbedingt einfacher. Was du dabei ja nur machst ist aussuchen, aus welcher gemessenen Tabelle du den Übertragungswert (Amplitude/Phase) für eine bestimmte Frequenz nimmst. Wenn du einen Wert benötigst, der genau zwsichen 2 vorhandenen liegt, musst du zB den Durchschnitt ausrechnen. Damit hast du dann aber nur zu Fuß eine simple Interpolation nachgebaut :) Ob eine Interpolation für allgemeine komplexe Funktionen Sinn macht, ist eine gute Frage, aber für alle relevanten physikalischen Probleme würde ich denken, ja es geht. Und zwar darfst du jede komplexe Zahl als Amplitude und Phase aufschreiben, die Interpolation müsste dann für diese beiden reell-wertigen Funktionen getrennt ablaufen. Das funktioniert solange gut, wie sich die Werte nur "smooth" mit der Frequenz ändern, was aber gegeben sein sollte. Also komplexe Übertragungsfunktion U für gegebene Frequenz f:
wobei A(f) und phi(f) reelle Funktionen sind, die aus einer beliebigen, nicht-äquidistanten Tabelle interpoliert werden können. Einfach Wertetabelle und Interpolationsdaten für einen Frequenzvektor plotten, dann siehst du wie "smooth" deine Funktion ist.
M1809 schrieb: > die jeweils bestimmten Frequenzen > zugeordnet sind, zu interpolieren? ja sicher, warum nicht? Es ist eine Interpolation zwischen 2 Vektor-Endpunkten, genau so, wie bei einer Bewegung in einer 2D-Ebene. Die Frage ist aber möglicherweise eine andere: Ist ein interpolierter Zwischenwert tatsächlich ein Repräsentant für den Wert der sich ergäbe, hätte man die FFT / DFT so aufgezogen, dass sie die gewünschte (zu interpolierende Frequenz) beschreibt .. also deren Amplitudenwert? Das ist nämlich nicht so, weil die den Frequenzen zugeordneten Amplituden keinen linearen Übergang bilden, sondern sich über eine COS/SIN-Funktion zum Nachbarn bewegen. Das kann man sehr schön sehen, wenn man manche FFTs betrachtet und einen Sweep laufen lässt. Die Amplituden bewegen sich in leichten Wellen. Daher muss die Interpolation im Winkelsystem erfolgen, oder man nimmt das Vorwärts-Newton-Verfahren, um es iterativ zu lösen, wenn man genug Rechenpower hat.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.