Forum: Digitale Signalverarbeitung / DSP / Machine Learning FFT - Funktion bei Oszilloskopen


von hyXamp (Gast)


Lesenswert?

Hallo,
ich bin mir gerade nicht sicher ob das Thema in das entsprechende Gebiet 
passt, aber ich probiere es einfach mal. Ich benutue bei meinem 
Oszilloskop die FFT-Funktion, um die Frequenzanteile eines Signals im 
Spektrum darstellen zu lassen. Die Länge des zu betrachtenden Signals 
beträgt 100 µs bei einer Speichertiefe von 1 MS und einer Abtastrate von 
10 GS/s. Somit sollte ich doch bei einer FFT-Analyse (bei 
Berücksichtigung der Nyquist Frequenz) ziemlich genau 500.000 Werte 
erhalten:

0.5 * 10 GS/s = 5 GS/s -> d.h. 5 GS/s * 0.0001 = 500 kS

Wenn ich mir das allerdings im ASCII-Format abspeichere, erhalte ich nur 
ein wenig mehr als die hälfte der Werte.
Ich habe probiert mich ein wenig in den FFT-Algorithmus des 
Oszilloskopes einzulesen, aber das ist mir doch ein wenig zu komplex.

Kann mir vielleicht jemand sagen, wie ich auf die Anzahl meiner 
gespeicherten Werte komme?

Viele Grüße!

: Verschoben durch Moderator
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

hyXamp schrieb:
> ich bin mir gerade nicht sicher ob das Thema in das entsprechende Gebiet
> passt

FFT (in diesem Zusammenhang) ist eher Signalverarbeitung, daher mal
ins DSP-Forum verschoben.

von hyXamp (Gast)


Lesenswert?

Okay vielen Dank.

Ich glaube allerdings, dass sich die Frage bereits erübrigt hat. Hatte 
ganz vergessen das die Anzahl der Messwerte einer Zweierpotenz 
entsprechen müssen. Somit kommt ich dann bei 2^16 +1 auch auf das 
korrekte Ergebnis.

Entschuldige für die Störung :D

von hyXamp (Gast)


Lesenswert?

Ach na wo wir schon bei FFT sind, hätte ich doch noch eine kleine frage.

Die Anzahl der Samples muss eine duale Basis haben. Wenn ich mir das 
nochmal in Matlab anschaue, sieht das in etwa so aus:


L = Länge des Signals (als Beispiel: 1000)
NFFT = Nächste Zweierpotenz der Signallänge
y = Funktion
Fs = Abtastrate

Aus der Matlab-Hilfedatei:

NFFT = 2^nextpow2(L)
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);

Soweit verstehe ich es eigentlich. Glaube ich.. Zunächst wird die 
nächste Zweierpotenz von der Anzahl meiner Abtastwerte ermittelt. Somit 
wär NFFT = 1024, da der Exponent 10 beträgt. Im nächsten Schritt wird 
das Signal mit der Anzahl der Werte Abgetastet, eine FFT durchgeführt 
und auf die Länge des Signals normiert. Anschließend wird die Abtastrate 
halbiert (Nyquist), die Anzahl der Abtastwerte halbiert (da 1024 zu hoch 
ist) und gleichmäßig verteilt. Aber mich irritiert die 1 dort ein wenig. 
Warum wird nochmal mit 1 addiert? Somit hat doch die Anzahl der 
Abtastwerte keine duale Basis mehr, sondern 2^9 + 1 ?

Oder verstehe ich irgendwas falsch?

Gruß

von fft (Gast)


Lesenswert?

symmetrie - "zaunproblem": anzahl pfosten vs. anzahl felder

von hyXamp (Gast)


Lesenswert?

Hm, so richtig schlau bin ich jetzt aber noch nicht draus geworden. Die 
FFT läuft doch darauf hinaus, dass die Abtastwerte aufgeteilt werden in 
Werten mit geradem und ungeradem Index. Wenn die Anzahl meiner 
Abtastwerte einer Potenz von zwei entsprechen, habe ich doch immer 
gleich viele gerade sowie ungerade Indexwerte. So wie es meines 
Erachtens auch sein sollte. Daher schließt sich mir die Addition mit der 
1 immer noch nicht so recht.

von Johannes E. (cpt_nemo)


Lesenswert?

hyXamp schrieb:
> Daher schließt sich mir die Addition mit der
> 1 immer noch nicht so recht.

Wenn man aus einem Signal mit N Samples das Spektrum mit der DFT 
berechnet, dann hat das Spektrum auch N Samples. Wenn das Signal im 
Zeitbereich rein reel ist, dann bekommt man ein symmetrisches Spektrum:

Y(n) = Y(N-n)

Es sind also die Punkte Y(0) .. Y(N/2) interessant, die Punkte Y(N/2+1) 
.. Y(N-1) sind die gespiegelten Werte von Y(1) .. Y(N/2) und werden bei 
der graphischen Darstellung meistens nicht dargestellt.

Die Anzahl der interessanten Punkte ist deshalb N/2+1.

: Bearbeitet durch User
von hyXamp (Gast)


Lesenswert?

Ah super, okay jetzt habe ich es verstanden. Vielen Dank!

Aber dann kann ich ja direkt noch eine Frage hinterherschieben ;)
Wie gesagt, beschäftige mich aktuell mit der FFT-Funktion und probiere 
ein wenig genauer zu Verstehen, was da genau passiert.

Wenn ich mir ein Spektrum über die vollständige, verfügbare Bandbreite 
anzeigen lasse, kann man er erkennen, dass die tieferen Frequenzen (also 
ungefähr bis zur halben Bandbreite) angehoben sind. Beginnend bei der 
Startfrequenz mit extrem hohen Pegel und alle weiteren Frequenzen fallen 
exponentiell ab. Das Rauschen weist die gleiche Charakteristik auf. 
Woran liegt denn das nun wieder? Ich vermute das könnte irgendwas mit 
der Fensterung zu tun haben? Habe kein Fenster drinne, wird also dann 
vermutlich automatisch ein Rechteck sein. Aber wirkt sich das 
tatsächlich so extrem aus?

von Johannes E. (cpt_nemo)


Lesenswert?

hyXamp schrieb:
> Ich vermute das könnte irgendwas mit
> der Fensterung zu tun haben? Habe kein Fenster drinne, wird also dann
> vermutlich automatisch ein Rechteck sein. Aber wirkt sich das
> tatsächlich so extrem aus?

Probiers doch einfach mal aus mit unterschiedlichen Fenster-Funktionen; 
dann siehst du, wie es sich auswirkt.

von hyXamp (Gast)


Lesenswert?

Klar, war eigentlich auch mein erster Gedanke. Kann ich aber erst 
nächste Woche machen ;) Also mache ich dann auch, aber vielleicht kann 
ja jetzt bereits schon jemand sagen, ob die Fensterung mit der Anhebung 
von Spektrallinien im tieferen Frequenzbereich etwas zu tun hat?

von Johannes E. (cpt_nemo)


Lesenswert?

hyXamp schrieb:
> aber vielleicht kann
> ja jetzt bereits schon jemand sagen, ob die Fensterung mit der Anhebung
> von Spektrallinien im tieferen Frequenzbereich etwas zu tun hat?

Die Fensterfunktion wirkt sich hauptsächlich auf die Pegel im Spektrum 
zwischen den einzelnen Spektrallinien auf, also dort, wo eigentlich kein 
Signal ist oder nur sehr schwache Signale vorhanden sind.

Ohne Fensterfunktion bzw. mit einem Rechteck-Fenster werden die 
einzelnen Linien nach unten hin relativ breit, wenn die Signalperiode 
nicht genau ganzzahlig ins Fenster passt. Durch eine geeignete 
Fensterfunktion wird diesr Effekt reduziert.

Die Höhe der Spektrallinien wird durch die Fenster-Funktion kaum 
beeinflusst, die Änderung liegt so in der Größenordnung von ca. +/- 1 
dB.

von hyXamp (Gast)


Lesenswert?

Mh, okay. Das werde ich dann nächste Woche mal ausprobieren. Ich habe 
auch eine weile nach einem passendem Bild gesucht, aber nichts in der 
Art gefunden. Wie lässt sich dann erklären, dass das Spektrum am Anfang 
ungefähr mit 1/f abfällt? Vielleicht finde ich noch ein passenden Foto, 
welches meine Frage vielleicht etwas genauer beschreiben kann.

von hyXamp (Gast)


Lesenswert?

Naja ist jetzt zwar kein Foto eines real aufgenommen Spektrums, aber so 
in etwa verhält es sich bei mir genauso, nur das eben ein paar 
Spektrallinien mit dabei sind. Die tieferen Frequenzen sind in der 
Amplitude genau wie das Rauschen angehoben. Hab das allerdings schon bei 
mehreren Oszilloskopen in der FFT-Funktion gesehen und die waren alles 
andere als billig!

http://harmonicresolution.com/GDnoise44k1fCDsampler.png

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Hat seine Quelle rein in der Analogtechnik. Halbleiter sind halt so 
veranlagt. Im oberen Frequenzbereichsende des Gerätes kann das dann aber 
auch das Antialiasing-Filter bewirken.

Mit weißem Rauschen hat man bei jeder Fensterfunktion einen aalglatten 
Frequenzgang.


Es gibt auch FFT mit nicht 2er-Potenzen. LTspice hat so einen 
Algorithmus drinnen.

von hyXamp (Gast)


Lesenswert?

Jetzt muss ich doch noch mal zur FFT zurück. Eine Sache geht mir da 
nicht aus dem Kopf:

Ich habe ein Signal, welches ich über einen Zeitraum von 100 µs 
betrachte. Diese Signal wird mit 10 GS/s abgetastet usw.. hatten ich ja 
oben schon beschrieben. Ich erhalte also 500.000 Samples. Weil die 
FFT-Funktion des Oszilloskops mit der basis 2 rechnet, erhalte ich 
letztendlich nurnoch 2^18+1 Samples.

Ich verstehe aber gerade nicht ganz, wie sich daraus dann ein Spektrum 
bis 5 GHz berechnen lässt.. D.h. kann man denn mit der geringeren Anzahl 
von Samples auch nach der FFT die Zeitreihe wieder herstellen? Ist das 
Signal durch die FFT nicht unterabgetastet?

Vermute die Lösung ist recht einfach, hab da nur anscheinend gerade 
irgendwie einen Denkfehler.

Gruß

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Die Frequenzauflösung ist dann 10GHz/2^18 .

Gemeinhin als "bin" genannt. Alles was zwischen den diskreten 
Frequenzlinien der sich ergebenden Auflösung liegt, wird durch die 
Fensterung umliegenden Frequenzlinien anteilsmäßig* zugeordnet.

* bestimmt eben durch die Fensterfunktion.


Ergänzend kann man noch Subsampling machen, also z.B. die effektive 
Bandbreite auf 1GHz und damit die Frequenzauflösung 10x. Mit dem 
Subsampling kann man dann auch die Amplitudenauflösung erhöhen, denn die 
üblichen Scopes haben nur 8-Bit Wandler. Das würde in diesem Beispiel 
dann ca. 1,7 Bits bringen. Es wäre dann also effektiv ein 9,7 
Bit-Wandler.

von Johannes E. (cpt_nemo)


Lesenswert?

hyXamp schrieb:
> Ich verstehe aber gerade nicht ganz, wie sich daraus dann ein Spektrum
> bis 5 GHz berechnen lässt.

Die obere Grenzfrequenz im Spektrum ist imm 1/(2 * Abtastrate), 
unabhängig von der Anzahl der Samples.
Die Anzahl der Samples wirkt sich nur auf die Auflösung im 
Frequenzbereich aus, so wie Abdul das beschrieben hat.

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
Noch kein Account? Hier anmelden.