Spektralanalyse eines einzelnen Frequenzbandes

Hi Steffen,

Das geht schon, wenn der Träger deutlich hochfrequenter ist, als das Nutzsignal. bei 3 kHz Träger eine 2 kHz Einhüllende herauszufischen ist aber so trivial nicht mehr.

Das könnte ich mal simulieren. So recht vorstellen kann ichs mir noch nicht.

Ich will den Rechenaufwand der FFT verringern, nicht verdoppeln ;-)

Nee, ich will die Einhüllende, und zwar möglichst gut.

Marte

Reply to
Marte Schwarz
Loading thread data ...

das geht ganz trivial.

x[0..N-1] := Samplewerte

gesucht der FFT-Koeffizienten zur Oberwelle f im FFT-Spektrum.

a[f] = sum(cos(2Pi f/N)*x[i]) b[f] = sum(sin(2Pi f/N)*x[i])

mit i = 0..N-1

ggf. noch passend normalisieren.

DFT ist Prinzip nichts anderes als eine komplexe Multiplikation der Samples mit der konstanten Matrix ft[i,j] = exp(-2Pi i*j/N) kurzum, mit allen Frequenzen, die es zu analysieren gilt.

Bei FFT macht man sich die Redundanz zu nutze, dass diese Matrix für gut faktorisierbare N jede menge gleiche Werte enthält. Wenn man aber nur eine Frequenz braucht, ist es sinnvoller das Skalarprodukt der Samples mit dem passenden Frequenzvektor auf die klassische Tour auszurechnen.

Marcel

Reply to
Marcel Müller

Es sind sinusförmige Träger deren Amplitude aber schwankt und diese Einhüllende soll bestimmt werden ?

Wenn die Trägerfrequenzen in vorhersehbar festen Bereichen liegen kann man natürlich auch eine Filterbank verwenden. D.h. versetzte breite Bandpaßfilter. Wenn man von Sonderfällen ( half-band filter, quadratur mirror filter ) absieht und willkürlich seine Bandgrenzen festlegen will ( in Sprachverarbeitung nach irgendwelchen psychoakustischen Frequenzgruppen ) landet man auf Controllern bei FFT statt IIR/FIR schlicht aus Aufwandsgründen.

Nominell könnte man natürlich eine Tracking-Lösung untersuchen in der man mit DFT eine Frequenz berechnet die dem Träger folgt. Man hat aber den Startwert nicht an dem der Träger anfängt. D.h. man müsste kontinuierlich ins RAM samplen, warten bis das Schwingungspaket genug Amplitude hat sodaß der Träger sicher detektierbar ist. DFT ab da Zeit rückwärts abarbeiten, dann DFT Zeit vorwärts abarbeiten. Ersten Streifen zeitlich umordnen, beide Streifen zusammekleben. Auf Einchip-Controller Problem mit zuwenig RAM.

MfG JRD

Reply to
Rafael Deliano

Hi Marcel,

So in etwa hatte ich das im Gefühl, aber die Mathe dazu ist einfach schon zu lange her. Da muss ich wohl noch einmal nachsitzen ;-) Aber es tröstet, dass es anderen auch nicht gleich trivial vorkam.

Sinustabellen kann man ja im Flash ablegen, das wird man wohl kaum in Realtime rechnen wollen.

sollte bei 12 Bit abtastwerten in einem 32 Bit System nicht zwingend nötig werden.

Klingt logisch. So ganz hab ichs ehrlich gesagt noch nicht durchgestiegen, aber vielleicht wird das ja, wenn ich mich eingehender damit befasse.

Marte

Reply to
Marte Schwarz

Hint: obige Summe kann man als Faltungsresultat zu einem bestimmten Zeitpunkt auffassen, Faltung mit einer Exponentialschwingung. Wenn man nun ein System mit exakt dieser Impulsantwort (die Exponentialschwingung meine ich) mit dem Signal anregt, hat man also dasselbe Ergebnis. Ein System mit dieser Impulsantwort ist beispielsweise ein rekursives System 2. Ordnung. Nimmt man das, hat man - tadaa! - den Goertzel-Algorithmus neu erfunden. :-)

Gruß Henning

Reply to
Henning Paul

In den in der Literatur angeführten Vergleichen DFT vs. FFT für den vollen Datensatz:

formatting link
sieht man erstens daß bei sehr kurzen Fensterlängen FFT kaum Vorteile hat. Zweitens sind da nur die Multiplikationen angeführt. Bei Controllern fressen aber auch Load/Store-Befehle Zeit. Da die DFT besonders simpel ist und leicht auch in Assembler codierbar verschiebt sich die effektive Grenze aber ab der FFT schneller ist immer mehr Richtung 128 Punkte.

Man muß die DFT auch nicht über Fensterlängen laufen lassen. Hier ist sie mit Integrate&Dump ( d.h. Rechteckfenster ) dargestellt:

formatting link
( aus DTMF-Decoder in Heft 12, dort ist auch Approximation der Quadraturpaare behandelt ( Artikel gibts auch in de Zeitschrift der FORTH e.V. )) Damit läuft sie hier konventionell über Fensterlänge. Wenn man Integrate&Dump durch Tiefpässe ersetzt dann läuft die DFT kontinuierlich. Praktisch ein sehr schmalbandiges Bandpaßfilter mit Gleichrichter ( vgl. die Quadrierer ).

MfG JRD

Reply to
Rafael Deliano

Guten alten? Also Leute, hier wird Mittelwelle noch fleissigst gehoert. Das olle australische Astor BPJ in meinem Labor hat nur Mittelwelle. Reicht voellig :-)

Du sagtest ja "1kHz und wenn's ganz dicke kommt bis 2kHz". Da Du offenbar das Signal verrsuchsweise schon digital vorliegen hast versuche das mal:

Sign Bit kappen bzw. mit "1" ueberschreiben, Haelfte des Full Scale Wertes abziehen, ordentlichen Tiefpass dahinter. Einfach mal sehen ob das fuer den Zweck nicht schon ganz gut wuerde.

3kHz bis 8kHz Filter geht auch, aber dann hast Du das Rauschen der nicht belegten Spektra mit drin. Ist am Ende eine Abwaegungsfrage, vom Aufwand her sollte beides unter Einsatz von weniger als 1W und hoffentlich deutlich unter $10 machbar sein. [...]
--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

Du kannst das ganze auch mit Amateurfunk-Software zur Sound Card ausprobieren, vielleicht spart Dir das einige Test-Programmiererei. Einfach mal rumstoebern:

formatting link

Lass es erstmal als Notreserve liegen. Man braucht WDF nur, wenn der gewaehlte uC zu schwach auf der Brust ist, keinen HW Multiplier hat oder wenn man sonst nicht unter die gewuenschte Grenze im Stromverbrauch kommt.

Dann geht es nicht ohne Gleichrichtung/Filter. Goertzel ist u.U. dabei nicht so der Hit, da Du nicht weisst wo der naechste Chirp auftaucht. Es kann sich aber durchaus rausstellen, dass die FFT vom Rechenaufwand her schon gar nicht so schlecht war.

Das ist eine gute Einstellung, denn ein Wechsel kostet Einarbeitung und die muss man fairerweise parallel zu den Gestehungskosten amortisieren.

Bei Euch muss man auch die Bestueckungskosten pro Teil einrechnen. Das vergesse ich oft, mache wohl zuviel fuer asiatische Fertigung.

Diese User Interfaces sind mir die liebsten, rote Lampe und gruene Lampe, kein unnoetiger Firlefanz ;-)

--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

Marte Schwarz schrieb:

Geht natürlich. Wenn man eine schnelle Multiplikation hat, kann man auch eine Taylor-Reihe vom Sinus nehmen.

--
  Klaus Rotter * klaus at rotters dot de * www.rotters.de
Reply to
Klaus Rotter

Was spricht denn gegen einen einfachen IIR oder FIR Filter der Deinen Ansprüchen genügt? Genau dafür sind die doch da. Hinterher noch (digital) gleichrichten und nochmal einen Filter drüber laufen lassen. So wie es die jetzige Lösung klingt, sollten ein paar Pole reichen.

Viele Grüße, Martin L.

Reply to
Martin Laabs

Hallo Jörg,

Werde ich wohl machen, ... später...

Marte

Reply to
Marte Schwarz

Wieso spaeter? Unser Feldwebel hatte immer gesagt "Der Tag hat 24 Stunden, und wenn das nicht reicht kommt eben die Nacht dazu" :-)

Ein wenig Spielerei mit dem Soundkarten Programm koennte sich ebenfalls lohnen. Ich habe nie selbst Filter und Mischergeschichten damit gemacht, aber es sieht so aus dass man sich das alles graphisch zusammenklicken kann. Oliver Bartels wuerde ueber so eine Bunti-Bildi-Klicki Methode sicher die Kraetze kriegen, aber bei den PSoC ging das auch so.

--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

Wenn es dich nicht stört, daß Du ggf. die ungeraden Oberwellen mitdetektierst (oder Du diese ohne viel Rechenaufwand wegfiltern kannst) kannst Du auch statt mit dem Sinus und Cosinus mit einer Rechteckschwingung sign(sin(t)) byw. sign(cos(t)) multiplizieren und so die Multiplikationen komplett durch Addition-Subtraktion ersetzen.

Du berechnest effektiv dann das Skalarprodukt deines Signales mit einer Rechteckfunktion statt mit einer Sinusschwingung.

Statt a[f] und b[f] bekommst Du dann (Achtung, nicht nachgerechnet!) stattdessen a[f]+1/3 a[3f] + 1/5 a[5f] und b[f]+1/3 b[3f] + 1/5 b[5f].

Ich könnte mir vorstellen, daß das für deinen Einsatzzweck auch reicht.

Gruß, Jürgen

Reply to
Jürgen Appel

Hallo Rafael,

Rafael Deliano schrieb:

aus einer früheren Untersuchung einer Filterbank fällt mir eine einfache Möglichkeit ein für einen FFT-Zoom, ist allerdings etwas her und ich bin nicht ganz sicher, ob es richtig ist.

Mit einem Quadraturmischer (sin(), cos()) mischt man die Mitte des zu betrachtenden Spektrums auf 0 runter, muß auf die Abtastrate natürlich achten. Dann begrenzt man das Spektrum mit 2 gleichen Tiefpässen für I und Q passend der gewünschten Bandbreite symmetrisch zu 0 und hat dann eine komplexe Zeitfunktion (Hilbert-Transformator). Die Filter wirken dann wie Bandpässe symmetrisch zu 0, das komplexe Signal müßte man dann eigentlich in der Abtastrate auch passend reduzieren und so bandbegrenzt durch eine sparsamere FFT jagen können.

Falls man wieder auf eine reelle Zeitfunktion gehen möchte, müßte man das Basisbandsignal mit einem Doppelquadraturmischer (für I und Q) wieder über 0 hochmischen und braucht dann von diesen wieder nur 1 Komponente für die reelle Zeitfunktion.

Man bräuchte also 2 zusätzliche Tiefpässe, die FFT wäre aber im Spektrum praktisch beliebig gezoomt. Für die Mischer kann man in bestimmten Fällen auf sin() und cos() verzichten und sie durch einfache Schalter ersetzen.

Das mit der Hüllkurve verstehe ich in diesem Zusammenhang nicht, das wäre für mich ein simpler Demodulator durch Betragsbildung.

mfg. Winfried

Reply to
Winfried Salomon

Das ist das Direktmischerverfahren und geht, nur in diesem Fall nicht, weil Marte schrieb dass die Traegerfrequenz nicht a priori bekannt sei und herumschlabbern kann.

Axt -> Signature Bit -> *POCK* -> wegspritz -> gleichgerichtet :-)

--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

Du hast soeben die Walsh-Hadamard-Transformation erfunden. :-)

Gruß Henning

Reply to
Henning Paul

Soweit radikal ist er glaube ich noch nicht: die ist binär und dann reicht XOR.

Er will nur das IQ-Signal binär ausführen:

formatting link
In dem Fall könnte man die hier dargestellte Integrate&Dump Funktion durch ein FIR-Filter ersetzen das für die Oberwellen des Rechtecks Nullstellen hat ( in Heft 11 meiner Zeitschrift beschrieben ). Insoweit diese Oberwellen in einer Anwendung tatsächlich stören und beseitigt werden müssen.

MfG JRD

Reply to
Rafael Deliano

Entspricht ziemlich genau dem Verfahren:

formatting link
D.h. Mischer, Tiefpaß/Decimator, FFT. Bezeichnung ist in der Literatur nicht einheitlich. Wird ohnehin in (FFT-)Lehrbüchern recht stiefmütterlich behandelt. Wohl weil Mischer=Nachrichtentechnik, Decimation&Interpolation irgendwas exotisches zu digitalen Filtern. Paßt also in kein Kapitel. Wie Peled/Liu aber schreiben: schon anfang der 70er für Sonar in Gebrauch. In Europa durch die Brüel&Kjaer Geräte bekannter geworden.

MfG JRD

Reply to
Rafael Deliano

gerade hier bietet sich doch der Goertzel an: der Algorithmus kann die spektrale Leistung einzelner DFT-B=E4nder anhand der eintrudelnden samples berechnen - man braucht nicht n samples erst mal abspeichern und dann FFT darauf los lassen, sondern kann alles mit einer Multiplikation und zwei additionen pro sample berechnen. (Plus alle n samples nochmal ne multiplikation + 2 Additionen um das Endergebnis zu berechnen) Das schafft auch ein schwacher controller in Echtzeit ->

keine L=FCcken im Signal. Goertzel ist eigentlich nur ein FIR filter 2-ter ordnung mit regelm=E4=DFiger Betragbildung des ergebnisses und anschlie=DFendem zur=FCckstellen auf 0. Gru=DF, Andi

Reply to
Andreas Beermann

Nein, IIR zweiter Ordnung.

Eben, ein FIR-Filter bräuchte man nicht auf 0 zurückzustellen.

Gruß Henning

Reply to
Henning Paul

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.