Delphi-PRAXiS
Seite 3 von 11     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Goertzel Algorithmus (Frequenz + Phase) (https://www.delphipraxis.net/162396-goertzel-algorithmus-frequenz-phase.html)

Medium 22. Aug 2011 16:01

AW: Goertzel Algorithmus (Frequenz + Phase)
 
Zitat:

Zitat von stoxx (Beitrag 1118608)
j
oder andere Frage .. könnte denn die FFT das Gleiche?
Also zu JEDER Frequenz die Amplitude und Phase und zu bestimmen?
In EINEM Rechteck.

Genau dafür ist die FT gedacht. Genau dafür. Du kannst die genau so mit einem Rechteck-Fenster voller Breite bestimmen wie den Goertzel. Und auch die Phasen bekommst du da raus. Alles was du so schreibst, klingt nach FFT ;)

Nur die Sache mit Samplerate/Frequenz: Bei Google suchenNyquist Theorem <- einer der elementarsten Grundsätze der Signalverarbeitung. Da kommst du ums Verrecken nicht drum rum, egal wie man sich dreht und wendet. Nicht in diesem Universum.

TiGü 22. Aug 2011 16:03

AW: Goertzel Algorithmus (Frequenz + Phase)
 
Und wenn doch kann er gleich nach Stockholm und sich den Nobelpreis geben lassen. :wink:

stoxx 22. Aug 2011 21:08

AW: Goertzel Algorithmus (Frequenz + Phase)
 
Liste der Anhänge anzeigen (Anzahl: 1)
ups , .. jetzt hab ich ausversehen meinen letzten Post gelöscht ..
wollte eigentlich was ergänzen.

also hier stand im groben .. dass mir das Nyquist Abtasttheorem natürlich klar ist,
und ich was anderes meinte..
nur diese Hügel im spektrum müssen noch raus, und ich überlege noch, wie das ohne irgendwelche Hammingfenster und Glättungen geht .. :)

stoxx 22. Aug 2011 22:50

AW: Goertzel Algorithmus (Frequenz + Phase)
 
Hallo Peter,

ich hab nochmal eine Frage zu Deinem Code.


Also wenn ich einfach Deine Demo so in Delphi starte, und einen Phasenwinkel von 0 einstelle. die Frequenz erzeuge, dann suche.

und wenn ich dann auf Goertzel Button gehe.

dann kommt ein realteil von 0 und ein Imaginäranteil von 7500 raus.
Das entspricht einem Winkel von 90.

und dann korrigierst Du diesen Winkel aber um 90 Grad, so dass ein (zufällig) richtiger Phasenwinkel von 0 rauskommt.

Delphi-Quellcode:
phas := 90 - 180 / Pi * (arctan(imag/re));

Das ist sehr eigenartig. warum stimmt der imaginäre Anteil nicht?
Darf ich fragen, wo Du die Formel her hast?
der Code funktioniert soweit, erstmal .. bei einfachen Frequenzen.
Aber bei vielen Überlagerungen, stimmt das dann auch noch?
Der Imaginärteil bei einem Phasenwinkel von 0 müsste doch Null sein, und der Realteil irgendein positiver Wert, oder bin ich da falsch gewickelt?
Welche Formel hast Du dafür jetzt verwendet?
irgendwie stimmt da was noch nicht, oder was denkst Du?

Medium 23. Aug 2011 00:33

AW: Goertzel Algorithmus (Frequenz + Phase)
 
Zitat:

Zitat von stoxx (Beitrag 1118726)
nur diese Hügel im spektrum müssen noch raus, und ich überlege noch, wie das ohne irgendwelche Hammingfenster und Glättungen geht .. :)

Vergiss es. Schau dir mal die Frequenzantwort eines Rechtecksignals an abs(Bei Google suchensinc) - fällt dir was auf? Genau. Das ist dein Fenster. Anders geht es nicht. Du musst filtern, fenstern, Toleranzen einbauen, einfach intelligentere Logik ansetzen. Das sind einfach Grenzen der Signalverarbeitung. Das kann man doof finden, oder auch nicht. Die sind einfach mal da ;)

stoxx 23. Aug 2011 00:47

AW: Goertzel Algorithmus (Frequenz + Phase)
 
Zitat:

Zitat von Medium (Beitrag 1118749)
Vergiss es. Schau dir mal die Frequenzantwort eines Rechtecksignals an abs(Bei Google suchensinc) - fällt dir was auf? Genau. Das ist dein Fenster. Anders geht es nicht. Du musst filtern, fenstern, Toleranzen einbauen, einfach intelligentere Logik ansetzen. Das sind einfach Grenzen der Signalverarbeitung. Das kann man doof finden, oder auch nicht. Die sind einfach mal da;)

okay :-)

Medium 23. Aug 2011 01:26

AW: Goertzel Algorithmus (Frequenz + Phase)
 
Zitat:

Zitat von stoxx (Beitrag 1118751)
Was meinst Du mit Frequenzantwort eines Rechtecksignals?

Die beiden Bilder rechts: Die Fourier-Transformierte Rechteckfunktion ist (im Realanteil) sinc(x), und abs(sinc(x)) schaut deiner "dreckigen" Funktion extrem ähnlich. Daher scheinen deine "Hügel" schlicht das Ergebnis des mit ältesten Problems der Signalanalyse zu sein: Aliasing. Lösung: Fenstern! Tut mir ja leid. Sinc-ähnliche Spektren sind täglich Brot in der Analyse, und sicherlich schon für viele ein Ärgernis gewesen. Ich spreche da aus Erfahrung :evil:. Fenster sind einfach dein Freund - wobei es da leider eben kein "gut oder schlecht" gibt, sondern nur "der Anforderung entsprechend günstig".

Daher insbesondere, aber auch mal so generell: Du schreibst viel, aber nicht was du überhaupt erreichen willst. Deine Kombi aus ungenauer Beschreibung und Neuheit in Sachen Signalverarbeitung (bzw. der daraus resultierenden Ambivalenzen in der Terminologie) machen das alles hier etwas schwierig. Was genau willst du am Ende haben, und was kommt rein? Bisher scheint mir ja nach wie vor eine günstig gefensterte FFT auf dem gesamten Signal mit anschließender lokaler Maximasuche eine gute Sache zu sein, aber wirklich bewerten kann man das aufgrund deiner Ausführungen nicht so in echt ;)

stoxx 23. Aug 2011 01:38

AW: Goertzel Algorithmus (Frequenz + Phase)
 
Zitat:

Zitat von Medium (Beitrag 1118753)
Fenstern! Tut mir ja leid. Sinc-ähnliche Spektren sind täglich Brot in der Analyse, und sicherlich schon für viele ein Ärgernis gewesen. Ich spreche da aus Erfahrung :evil:. Fenster sind einfach dein Freund - wobei es da leider eben kein "gut oder schlecht" gibt, sondern nur "der Anforderung entsprechend günstig".

da werde ich wohl noch zu tun haben.

Medium 23. Aug 2011 02:39

AW: Goertzel Algorithmus (Frequenz + Phase)
 
Du bleibst schwammig. Du willst einen Nulldurchgang? Nicht? Wann? Wo? Was genau willst du tun!? Feststellen, ob eine ganz bestimmte Frequenz in einem Signal vorliegt? Feststellen, zu welchem Anteil eine bestimmte Frequenz in einem Signal vorliegt? Feststellen, welche Frequenz in einem Signal maximal vorliegt? Feststellen, welche Frequenzen in einem Signal dominieren? Frequenzen suchen, die in bekannter Phase sind? Phasen suchen, in denen eine Frequenz im Signal vorliegt? WAS!? Ein Nulldurchgang ist einfach*, das weisst du ja. Aber was willst du mit diesem anfangen? Ich glaube, du bist so tief in deinem Problem, dass dir das verständliche Erklären des Gesamtproblems für Aussenstehende abhanden gekommen ist. Geht mir selbst öfter als mir lieb ist auch so, aber allein dies zu tun ist oft ja schon 50% der Lösungsfindung - oft dann sogar schon von allein.
Aber ich weiss, trotz Verfolgung des Threads, grad echt nicht, wo bei dir die Glocken hängen. Oder wo sie hängen sollten. Oder klingen sollten :)

*) Eben bei Sign(Signal(t)) <> Sign(Signal(t-1)) bzw. Signal(t) = 0; bei komplexen Signalen (lies: von sin(t) verschieden) aber wird es halt doch scho nwieder ekelig, da dir ein Berg bzw. Tal einer Frequenz den eigentlichen Nulldurchgang einer anderen ins Positive bzw. Negative verschubsen kann (und wird). Und da liegt ja der Hund begraben. Wenn das so einfach wäre, gäb es das sicherlich schon. Für einfache Sinusschwingungen langt doch das Merken ob man einen pos/neg Wechsel hatte, und der Nulldurchgang danach ist's. Aber nochmals: Was für Signale hast du, und was für eine Aussage willst du über dieses treffen?

stoxx 23. Aug 2011 03:12

AW: Goertzel Algorithmus (Frequenz + Phase)
 
Zitat:

Zitat von Medium (Beitrag 1118756)
Du bleibst schwammig. Du willst einen Nulldurchgang? Nicht? Wann? Wo? Was genau willst du tun!? Feststellen, ob eine ganz bestimmte Frequenz in einem Signal vorliegt? Feststellen, zu welchem Anteil eine bestimmte Frequenz in einem Signal vorliegt? Feststellen, welche Frequenz in einem Signal maximal vorliegt? Feststellen, welche Frequenzen in einem Signal dominieren? Frequenzen suchen, die in bekannter Phase sind? Phasen suchen, in denen eine Frequenz im Signal vorliegt? WAS!? Ein Nulldurchgang ist einfach*, das weisst du ja. Aber was willst du mit diesem anfangen? Ich glaube, du bist so tief in deinem Problem, dass dir das verständliche Erklären des Gesamtproblems für Aussenstehende abhanden gekommen ist. Geht mir selbst öfter als mir lieb ist auch so, aber allein dies zu tun ist oft ja schon 50% der Lösungsfindung - oft dann sogar schon von allein.
Aber ich weiss, trotz Verfolgung des Threads, grad echt nicht, wo bei dir die Glocken hängen. Oder wo sie hängen sollten. Oder klingen sollten :)




Was ich möchte? .. Freqenzen finden, bestimmte .. die wichtigsten Frequenzen.
Rauschen rauschschneiden (Tiefpassfilter) und Signalrekonstruktion aus den übriggebliebenen und gewählten Frequenzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:33 Uhr.
Seite 3 von 11     123 45     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz