Forum: Digitale Signalverarbeitung / DSP / Machine Learning FFT aus gestückelten Teilen zusammensetzen


von Bernhard (Gast)


Lesenswert?

Eine Frage an die Signalverarbeitungs-Cracks: Ich möchte das Rauschen 
von Verstärkerschaltungen wie z.B. OPVs messen. Dafür will ich die 
Rohdaten eines USB Oszilloskops (Bitscope Micro) in Octave einlesen und 
dort eine FFT machen, um nach etwas Rechnen z.B. zu der Aussage zu 
gelangen: Bei 300 Hz hat der Mikrofonvorverstärker eine Noise Figure von 
X dB.

Mit dem Bitscope Micro kann ich aber nur ca. 3000 Samplewerte 
hintereinander aufnehmen. Die Samplefrequenz kann ich dabei von wenigen 
kHz bis 20 MHz ändern - aber immer nur ca. 3000 Werte dieser Taktung 
hintereinander in eine Datei schreiben. Auch wenn ich im kHz Bereich 
sample, dann beträgt die Analogbandbreite aber immer volle 20 MHz! Ich 
muss mich also an Herrn Nyquist erinnern.

Hat der zu messende Verstärker eine Bandbreite von 100 oder 200 kHz, 
dann bin ich mit z.B. 1 MHz Samplingfrequenz auf der sicheren Seite.

Damit erreiche ich in der folgenden FFT aber nur eine Auflösung von 
1MHz/3000 also ~300 Hz. Das ist mir zu grob - ich will das feiner haben.

Lasse ich das Schreiben der Rohdaten in die Datei einfach etwas länger 
laufen, dann landen in der .csv Datei nicht nur ein Durchgang mit 3000 
Werten, sondern mehrere Durchgänge mit Pausen dazwischen (undefiniert, 
Sekundenbereich).

Hier kommt die Frage: Wenn ich 3000 Werte 100 mal hintereinander 
aufnehme und in eine FFT packe, also 3000*100=300.000 Werte, dann hätte 
ich rechnerisch in der FFT die 100 fache Auflösung - aber ist das 
zulässig? Bildet mir das so generierte Spektrum noch die Realität ab?

Oder verhäcksel ich mir irgendwie das Spektrum?

Das gesampelte Signal ist natürlich kein rein weißes Rauschen (dann 
würde mein Vorhaben vermutlich gehen?), sondern sicherlich irgendwie 
gefärbtes Rauschen.

Ja ich weiß, ich könnte eine Soundkarte nehmen - will ich aber nicht. 
Ich will bis DC runter messen können. Und ja, ich kann mir einen 
Antialiasing-Tiefpass bauen und bei kleinerer Samplingfrequenz arbeiten. 
Frage ist, ob ich mir diesen Aufwand sparen kann.

Grüße, Bernhard

von Sven B. (scummos)


Lesenswert?

Wenn du zwischendrin Pausen hast, hast du m.E. Pech gehabt mit der 
Auflösung. Je nach zusätzlichem Wissen über das Signal kann man sich 
vielleicht etwas cleveres überlegen, ich denke bei einem rauschartigen 
Signal stehen die Chancen aber schlecht. Einfach die Stücke 
aneinanderhängen und zusammen transformieren geht definitiv nicht.

Im Endeffekt ist das die Energie-Zeit-Unschärfe, die ist ziemlich 
fundamental und wird entsprechend schwer auszutricksen sein. ;)

von J. S. (engineer) Benutzerseite


Lesenswert?

Im Prinzip geht das schon, Du musst halt immer jeweils fenstern und die 
Ergebnisse überlagern. Allerdings hast Du damit das Auflösungproblem 
noch nicht wirklioch gelöst. Du brauchst schon eine genügend lange UND 
schnelle Abtastung. Am Besten ist es, wenn man sicherstellen kann, dass 
die Stücke reproduzierbare Daten haben und sie passend aneinander legt.
Das wird aber wohl bei Dir nicht funktionieren.

Vielleicht kann man das auch komplett sampeln und aufzeichnen und in 
Excel machen. Excel hat nämlich eine FFT eingebaut. Ist ein wenig 
umständlich zu bedienen aber funktioniert.

Besser ist es allerdings, die einzelnden Frequenzbänder zu messen:

Wenn Du das nur mit jeweils 3000 samples machen kannst, musst Du die 
Frequenzbereiche aufteilen und langsamer sampeln, allerdings zuvor auch 
passend filtern, weil Du sonst verfälschte Ergebnisse erhälst.

Du könntest z.B. bei 10facher Überabtastung jeweils den Filter auf 1/20 
der Abtastfrequenz stellen, also als Beispiel: 3000 Hz, 300Hz Filter und 
kämst dann mit der FFT runter bis auf 1 Hz. Dann mit 30kHz Abtastund und 
3kHz Filter Auflösung mit 10Hz für die Mitten und dann mit 300kHz und 
30kHz Filter die Messung für die Höhen.

Sowas wird real auch indirekt gemacht, indem parallel gefiltert und 
gesampelt wird z.B. mit einer Kaskade aus Halbbandfiltern.

von Sven B. (scummos)


Lesenswert?

Jürgen S. schrieb:
> Im Prinzip geht das schon, Du musst halt immer jeweils fenstern und die
> Ergebnisse überlagern. Allerdings hast Du damit das Auflösungproblem
> noch nicht wirklioch gelöst.
Oder in anderen Worten, im Prinzip geht es nicht, denn das trägt zur 
Lösung des Problems leider gar nichts bei. ;p

> Wenn Du das nur mit jeweils 3000 samples machen kannst, musst Du die
> Frequenzbereiche aufteilen und langsamer sampeln, allerdings zuvor auch
> passend filtern, weil Du sonst verfälschte Ergebnisse erhälst.
Das geht, ja.

von Harald W. (wilhelms)


Lesenswert?

Bernhard schrieb:

> Ich möchte das Rauschen von Verstärkerschaltungen wie z.B. OPVs messen.
> Dafür will ich die Rohdaten eines USB Oszilloskops einlesen und
> dort eine FFT machen,

Die Wahrscheinlichkeit ist gross, das Dein Billig-Oszi mehr rauscht
als Deine zu testende Schaltung. Ausserdem ist eine FFT m.E. nicht
unbedingt geeignet, um Rauschen zu messen.

: Bearbeitet durch User
von J. S. (engineer) Benutzerseite


Lesenswert?

Sven B. schrieb:
> Jürgen S. schrieb:
>> Im Prinzip geht das schon, Du musst halt immer jeweils fenstern und die
>> Ergebnisse überlagern. Allerdings hast Du damit das Auflösungproblem
>> noch nicht wirklioch gelöst.
> Oder in anderen Worten, im Prinzip geht es nicht, denn das trägt zur
> Lösung des Problems leider gar nichts bei. ;p
>
>> Wenn Du das nur mit jeweils 3000 samples machen kannst, musst Du die
>> Frequenzbereiche aufteilen und langsamer sampeln, allerdings zuvor auch
>> passend filtern, weil Du sonst verfälschte Ergebnisse erhälst.
> Das geht, ja.

Wie man es nimmt. Wenn man immer auf derselben Frequenz misst und 
stückelt, erwischt man durchaus ja die verschiedensten Anteile zu 
unterschiedlichen Zeiten, also vor allem auch die Wellenanteile der 
niederen Frequenzen. Damit werden die (durch Überlagerung) durchaus 
genauer gemessen.

Überlagerung ist auch das Mittel bei der Rauschmessung mit FFT:


Harald W. schrieb:
> Ausserdem ist eine FFT m.E. nicht
> unbedingt geeignet, um Rauschen zu messen.

Bei einer ausreichend langen Überlagerung = Akumulation werden die 
Frequenzanteile auch entsprechend dem Signalgemisch - unabhängig vom 
Zufall - abgebildet.

von Sven B. (scummos)


Lesenswert?

Naja, aber schau dir zum Beispiel mal den untersten Bin der FFT an. Der 
geht immer von 0 bis 2/T und alles zwischendrin an Frequenzen ist da 
reingemittelt. Das kannst du nicht trennen, außer du hast wirklich eine 
zusammenhängende Kette an Messwerten die länger ist als T.

von J. S. (engineer) Benutzerseite


Lesenswert?

Sven B. schrieb:
> außer du hast wirklich eine
> zusammenhängende Kette an Messwerten die länger ist als T.

... das war die Überlegung dahinter. Die gebündelte Information einer 
Stützstelle im output der FFT repräsentiert den Anteil der Frequenzen 
mit einer gleichförmigen Überlappung mit den Nachbarbereichen. Mit einer 
erhöhten Anzahl von FFTs / Abschnitten erreicht man Dasselbe(?), wie mit 
einer längeren Periode: Eine Verschärfung der Repräsentanz hin zu den 
tatsächlichen Frequenzen. Das steigert die Auflösung.

Allerding muss Ich nun hinzufügen, daß man dann auch die Frequenzen 
shiften müsste, um wieder zur gleichen Überdeckung zu kommen - wie ich 
gerade sehe.

Es führt also kein Weg darum herum, die unterschiedlichen Abschnitte mit 
unterschiedlichen Abtastraten zu scannen.

von Jay (Gast)


Lesenswert?

Du kannst eine zweidimensionale Repräsentation des Spektrums basteln 
(Spectrogram). Dabei kannst du, wenn du möchtest, jeden einzelnen 
Abschnitt mit Nullen auffüllen um die Frequenzauflösung zu erhöhen (vor 
dem Auffüllen die gewählte Fensterfunktion anwenden, nicht danach).

Dann könntest du mal nachsehen, was es für Methoden zur numerischen 
Auswertung von Spectrogrammen gibt. Normalerweise schaut man sich die ja 
nur an.

Meine Lösungsansätze wären allerdings:

- Wenn der Chef es bezahlt: Vernünftige Messgeräte kaufen/mieten

- Wenn nicht: Mir statt der FFT andere Transformationen, z.B. 
Wavelet-Transformationen, anzusehen ob die bessere Eigenschaften bei den 
gegebenen Messwerten haben.

Nebenbei:

> Auch wenn ich im kHz Bereich sample, dann beträgt die Analogbandbreite
> aber immer volle 20 MHz!

Die könntest ein Filter vorschalten wenn du gar nicht die 20 MHz 
brauchst (Audio?).

von Sven B. (scummos)


Lesenswert?

Mit Nullen auffüllen erhöht aber nur die scheinbare Frequenzauflösung, 
genauere Messwerte bekommst du dadurch nicht. Die werden einfach 
verschmiert.

von Bernhard (Gast)


Lesenswert?

Sven B. schrieb
> Einfach die Stücke
> aneinanderhängen und zusammen transformieren geht definitiv nicht.

Ich habe es befürchtet! Aber danke für die Bestätigung.

 Jürgen S. schrieb
> Vielleicht kann man das auch komplett sampeln und aufzeichnen und in
> Excel machen. Excel hat nämlich eine FFT eingebaut. Ist ein wenig
> umständlich zu bedienen aber funktioniert.

Ich bin halt mit der Hardware auf die ca. 3000 Stück Samples begrenzt. 
FFT geht in Excel, das stimmt, ich nehme Octave, das ist Freeware und 
geht ziemlich gut.

> Besser ist es allerdings, die einzelnden Frequenzbänder zu messen

Ja, ich werde das so machen müssen.

Harald Wilhelms schrieb
> Die Wahrscheinlichkeit ist gross, das Dein Billig-Oszi mehr rauscht
> als Deine zu testende Schaltung. Ausserdem ist eine FFT m.E. nicht
> unbedingt geeignet, um Rauschen zu messen.

Vor allem sind es nur 8 Bit vertikal... meine Idee war die Verstärkung 
der Schaltung hoch genug zu machen, damit die 8 Bit zumindest ausgenutzt 
werden und über etliche Durchgänge zu mitteln.

Was würdest du anstatt der FFT machen? Ich möchte eine Noise Figure in 
Abhängigkeit der Frequenz ermitteln, das wüsste ich nur mit FFT zu 
machen.

Jay schrieb
> - Wenn der Chef es bezahlt: Vernünftige Messgeräte kaufen/mieten

Fällt aus, das ist alles Privatbastelei :-)

> statt der FFT andere Transformationen, z.B. Wavelet-Transformationen

Muss ich mich mal einlesen, mit Wavelet hatte ich bisher noch gar nichts 
zu tun.

> Die könntest ein Filter vorschalten wenn du gar nicht die 20 MHz
> brauchst (Audio?).

Genau das werde ich wohl machen müssen.

von Sven B. (scummos)


Lesenswert?

Wenn du eine Noise Figure messen willst, sind 8 bit vertikal schon total 
übertrieben. 2 bit würden genügen. Also in dem Punkt keine Sorge ;)
Problematisch wird vielleicht eher tatsächlich genug Samples 
zusammenzumitteln dass das Spektrum hinreichend glatt wird.

von Harald W. (wilhelms)


Lesenswert?

Bernhard schrieb:

> Was würdest du anstatt der FFT machen?

DFT?

von Sven B. (scummos)


Lesenswert?

Harald W. schrieb:
> Bernhard schrieb:
>
>> Was würdest du anstatt der FFT machen?
>
> DFT?

FFT ist ein Algorithmus der die DFT berechnet ...

von Harald W. (wilhelms)


Lesenswert?

Sven B. schrieb:
> Harald W. schrieb:
>> Bernhard schrieb:
>>
>>> Was würdest du anstatt der FFT machen?
>>
>> DFT?
>
> FFT ist ein Algorithmus der die DFT berechnet ...

Nein, FFT ist eine "Krücke", die mal "erfunden" wurde, um mit
der begrenzten Rechenleistung der Rechner von vor fünfzig Jahren
trotzdem in überschaubarer Zeit ein Ergebnis zu bekommen. Die
Schwächen dieser Berechnungsmethode hat man da in Kauf genommen.

: Bearbeitet durch User
von Sven B. (scummos)


Lesenswert?

Harald W. schrieb:
>> FFT ist ein Algorithmus der die DFT berechnet ...
>
> Nein, FFT ist eine "Krücke", die mal "erfunden" wurde, um mit
> der begrenzten Rechenleistung der Rechner von vor fünfzig Jahren
> trotzdem in überschaubarer Zeit ein Ergebnis zu bekommen. Die
> Schwächen dieser Berechnungsmethode hat man da in Kauf genommen.

Huch, was? Nein. Die FFT ist mathematisch exakt. Jedes andere Verfahren 
führt im Rahmen numerischer Fehler auf dasselbe Ergebnis. Oder welche 
Fehler führt die FFT deiner Meinung nach ein?

: Bearbeitet durch User
von Harald W. (wilhelms)


Lesenswert?

Sven B. schrieb:

> Oder welche Fehler führt die FFT deiner Meinung nach ein?

Die FFT berücksichtigt nur ganzzahlige Vielfache einer Grundfrequenz.
Gerade beim Rauschen gibt es aber auch Frequenzen "dazwischen".

von Signalverarbeiter (Gast)


Lesenswert?

Harald W. schrieb:
> Nein, FFT ist eine "Krücke", die mal "erfunden" wurde, um mit
> der begrenzten Rechenleistung der Rechner von

Das muss hier unbedingt klargestellt werden: Die FFT ist nichts anderes 
als eine effiziente Implementation der DFT. Die FFT ist kein 
Sonderfall oder sonst irgendeine "ungenau" Version der DFT!

Analog zu (stabilen) Sortieralgorithmen: Mit welchen Algorithmus Du 
etwas sortierst, spielt keine Rolle. Das Ergebnis ist gleich, unabhängig 
davon, ob der Algorithmus langsam oder schnell ist.

Die FFT ist sozusagen das "Quick-Sort" der DFT.

Die DFT ist:
N ist dabei die Anzahl der Samples, von der Du die DFT rechnen möchtest. 
Den Index k kannst Du eigentlich beliebig wählen, da die DFT aber 
periodisch ist, wiederholt sich das X[i] alle k Elemente. Die Periode 
von k ist auch N, die Anzahl der Samples Deiner Einganssequenz!

D.h, wenn Du von 1000 Samples die DFT rechnest, bekommst Du ein Spektrum 
mit 1000 Werten raus.

Diese DFT kannst Du nun exakt so wie oben hingeschrieben ausrechnen. Für 
kleine N, z.B. 10 oder so, ist es eine sehr lehrreiche Übung das von 
Hand zu machen.

Und die FFT berechnet genau diese DFT, nur nicht auf den naiven Weg, 
sondern durch cleveres Ausnutzen bestimmter Zusammenhänge mit deutlich 
weniger Multiplikationen. Dafür hat die FFT die Einschränkung, dass sie 
eben nur für 2er-Potenzen funktioniert. Das ist aber schon alles.

Um es nochmals ganz deutlich zu sagen: FFT und DFT sind im Ergebnis 
exakt gleich! FFT ist eine DFT-Implementierung!

von Sven B. (scummos)


Lesenswert?

Harald W. schrieb:
> Die FFT berücksichtigt nur ganzzahlige Vielfache einer Grundfrequenz.
> Gerade beim Rauschen gibt es aber auch Frequenzen "dazwischen".

Wie mein Vorredner schon gesagt hat ist das nicht von Belang; diese 
"Frequenzen dazwischen" gibt es zwar, aber die Information ist schon in 
den ursprünglichen Messwerten nicht enthalten. Dass die FFT diese nicht 
zu Tage fördern kann ist keine Beschränkung der FFT, sondern vielmehr 
einfach die Energie-Zeit-Unschärfe der QM.

von Signalverarbeiter (Gast)


Lesenswert?

Harald W. schrieb:
> Die FFT berücksichtigt nur ganzzahlige Vielfache einer Grundfrequenz.
> Gerade beim Rauschen gibt es aber auch Frequenzen "dazwischen".

Das ist nur eine Frage der Auflösung.

Kleines Gedankenexperiment:

a.) Ein Sinus mit 1Hz wird eine Sekunde lang mit 10Hz gesampelt. Die 
Auflösung des AD-Wandler sei 8 Bit. D.h. das gibt 10 Werte mit je 8 Bit.

b.) Ein Sinus mit 1,00001 Hz wird auch mit 8 Bit und 10Hz eine Sekunde 
lang gesampelt. Also auch 10 Messwerte mit 10 Bits

Nun die Frage: Siehst Du einen Unterschied in den beiden 
Messwert-Sätzen? Ich hab's jetzt nicht nachgerechnet, aber die Antwort 
dürfte Nein sein.

Nächster Teil des Gedankenexperiments: Was verändert sich, wenn Du diese 
beiden Signale nicht nur eine Sekunde lang misst bzw. beobachtest, 
sondern 10 Stunden?

Als Ergebnis hättest Du zwei Datensätze mit jeweils 360000 Messungen. 
Dann würdest Du (u.a.) nach 10 Stunden sehen, dass im Fall b sich die 
Sinusschwingung um ca. 4 Samples gegenüber Fall a verschoben hat.

von Sven B. (scummos)


Lesenswert?

Ein interessantes Gedankenexperiment, aber ich denke die 
Vertikalauflösung hat damit nur indirekt zu tun. Selbst wenn du 
beliebige Vertikalauflösung hast wird die Frequenzunschärfe bestehen 
bleiben; es gibt einfach unendlich viele Möglichkeiten, das beobachtete 
Signal als Gemisch von Grundfrequenzen darzustellen, die innerhalb des 
Bins liegen der nach der FFT die Energie enthält. Es kommt wirklich nur 
darauf an, wie groß der betrachtete Zeitraum ist.

Wenn du tatsächlich weißt, dass das Signal echt monochromatisch ist, 
kannst du wahrscheinlich mit genug Vertikalauflösung etwas mehr 
rauslesen, das kann sein. Ist in der Praxis aber ohnehin nie der Fall.

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