Delphi-PRAXiS
Seite 4 von 11   « Erste     234 56     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)

TiGü 23. Aug 2011 08:49

AW: Goertzel Algorithmus (Frequenz + Phase)
 
Zitat:

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

1. Welche Bandbreite hat das Signal?
2. Welche Frequenzen sind gesucht?
3. Kann man das konkretisieren, also weißt du welche Frequenzen GENAU gesucht werden?
4. Willst du den Phasenunterschied zwischen zwei oder mehr Frequenzen wissen?
5. Wenn ja, wozu?
6. Gibt es Einschränkungen für die Abtastrate?
7. Mit welchen SNR ist zu rechnen?
8. Ist das Rauschen frequenzmäßig immer kleiner als die gesuchten Frequenzen?

Mich beschleicht das Gefühl, dass du dich in einer Lösung verrannt hast und nicht mehr das große Ganze siehst bzw. dich auf den Goertzel-Algorithmus versteift hast.

Am besten wäre es, wenn du mit MATLAB bzw. Scilab erstmal eine funktionierende Lösung bastelst.
So kannst dich voll und ganz auf das Problem konzentrieren, ohne dich mit den Feinheiten der Delphi-Programmierung bzw. der verwendeten Algorithmen auseinandersetzen zu müssen.

stoxx 23. Aug 2011 10:32

AW: Goertzel Algorithmus (Frequenz + Phase)
 
doch noch kurz zu Deinen Fragen ...

Zitat:

Zitat von TiGü (Beitrag 1118806)
1. Welche Bandbreite hat das Signal?

das möchte ich ja herausfinden :-)

Zitat:

Zitat von TiGü (Beitrag 1118806)
1. Welche Bandbreite hat das Signal?

das sehe ich erst dann, im Moment sehe ich nur per "Auge" eine zyklik, die ich näher bestimmen möchte.

Zitat:

Zitat von TiGü (Beitrag 1118806)
4. Willst du den Phasenunterschied zwischen zwei oder mehr Frequenzen wissen?

ja, sehr wichtig.

Zitat:

Zitat von TiGü (Beitrag 1118806)
7. Mit welchen SNR ist zu rechnen?

darf ich fragen, was das ist?

Zitat:

Zitat von TiGü (Beitrag 1118806)
8. Ist das Rauschen frequenzmäßig immer kleiner als die gesuchten Frequenzen?

nicht unbedingt ..


der korrekte Goertzel Algo, der auch den korrenten imaginär und realteil liefert, steht überigens auf der Buchseite, die ich hier schon gepostet habe vor ein paar Tagen ;-)
man muss nur lesen können ..

TiGü 23. Aug 2011 12:52

AW: Goertzel Algorithmus (Frequenz + Phase)
 
Zitat:

Zitat von stoxx (Beitrag 1118852)
Zitat:

Zitat von TiGü (Beitrag 1118806)
1. Welche Bandbreite hat das Signal?

das möchte ich ja herausfinden :-)

Nein, sowas weiß man vorher!

Hast du es mit Audiofrequenzen zu tun? Seismische Wellen? Hoch- Höchst- oder Mikrowellensignalen?
Hast du ein Tiefpasssignal oder musst du erst was von einer Trägerfrequenz demodulieren?

Ich nehme an, zumindest interpretiere ich so die vorigen Posts, du hast Audiosamples als Dateien bzw. direkt von der Soundkarte.
Hier wäre eine Abtastrate von min. 44,1 kHz zu empfehlen

Zitat:

Zitat von stoxx (Beitrag 1118852)
Zitat:

Zitat von TiGü (Beitrag 1118806)
1. Welche Bandbreite hat das Signal?

das sehe ich erst dann, im Moment sehe ich nur per "Auge" eine zyklik, die ich näher bestimmen möchte.

Ist wohl die Antwort auf Frage zwei.
Was möchtest du da näher bestimmen?

Zitat:

Zitat von stoxx (Beitrag 1118852)
Zitat:

Zitat von TiGü (Beitrag 1118806)
4. Willst du den Phasenunterschied zwischen zwei oder mehr Frequenzen wissen?

ja, sehr wichtig.

Warum ist das sehr wichtig?

Zitat:

Zitat von stoxx (Beitrag 1118852)
Zitat:

Zitat von TiGü (Beitrag 1118806)
7. Mit welchen SNR ist zu rechnen?

darf ich fragen, was das ist?

Du darst, und zwar Mr. Google.
Hör mal, wir können dir nicht die Grundlagen von (digitaler) Signaltheorie und -Verarbeitung beibringen, dass musst du schon selber tun.
Das Internet ist voller Informationen dazu.
Bspw. http://books.google.de/books?id=_Ep5...page&q&f=false
Seite 160 würde ich mir mal an deiner Stelle genauer anschauen.

Zitat:

Zitat von stoxx (Beitrag 1118852)
Zitat:

Zitat von TiGü (Beitrag 1118806)
8. Ist das Rauschen frequenzmäßig immer kleiner als die gesuchten Frequenzen?

nicht unbedingt ..

Was heißt das, dass klingt sehr schwammig! Aber die Frage korrespondiert mit Frage eins und zwei.

Zitat:

Zitat von stoxx (Beitrag 1118852)
der korrekte Goertzel Algo, der auch den korrenten imaginär und realteil liefert, steht überigens auf der Buchseite, die ich hier schon gepostet habe vor ein paar Tagen ;-)
man muss nur lesen können ..

Das ist sehr schön für dich, bringt dich aber keinen Deut weiter.

Soweit ich das deinen spärlichen Erklärungen entnehmen kann, hast du ein Signal mit unbekannter Bandbreite, daher auch keine Information über die notwendige Abtastfrequenz, so dass du diese so hoch wie möglich ansetzen musst.
Des Weiteren weißt du nicht die konkreten Werte der gesuchten Frequenzen, diese scheinen zufällig zu sein.
Du willst aber diese finden, über deren SNR.
Wenn irgendwelche Frequnzen über einen Peak sichtbar werden, also deutlich über dem allgemeinen Rauschen liegt, dann hast du die von dir gewünschte "Zyklik", richtig?

Wenn du die gesuchten Frequenzen nicht genau weißt, dann hast du mit den Goertzel-Algorithmus das falsche Werkzeug gewählt.
Dieser wurde entwickelt, um BESTIMMTE und VORHER BEKANNTE Frequenzen aus einen Signal zu filtern.
Das hätte aber durch ein aufmerksames Lesen bei der deutschen und englischen Wikipedia eigentlich klar sein müssen.

Ich hoffe du machst das nicht für eine Diplomarbeit oder ähnliches, denn dann hättest du ziemlich viel Zeit verplempert!

stoxx 23. Aug 2011 18:43

AW: Goertzel Algorithmus (Frequenz + Phase)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von TiGü (Beitrag 1118931)
Nein, sowas weiß man vorher!

ja .. natürlich weiß ich die Bandbreite in etwa vorher, soviel geben die Daten ja auch nicht her. bzw nicht alles ist sinnvoll. Hab mich da wohl etwas missverständlich ausgedrückt.

Zitat:

Zitat von TiGü (Beitrag 1118931)
Hast du es mit Audiofrequenzen zu tun? Seismische Wellen? Hoch- Höchst- oder Mikrowellensignalen?
Hast du ein Tiefpasssignal oder musst du erst was von einer Trägerfrequenz demodulieren?

ich muss gar nichts, ich möchte Finanzzeitreihen auseinander dröseln. 8-)


Zitat:

Zitat von TiGü (Beitrag 1118806)
1. Welche Bandbreite hat das Signal?

jee nach Auflösung die man haben will, da es ja keine Audiofrequenzen sind, muss das eh noch umgerechnet werden auf Zyklen ( Wellenlänge der Frequenz)

Zitat:

Zitat von TiGü (Beitrag 1118806)
Warum ist das sehr wichtig?

na sehr wichtig, sonst Murks

Zitat:

Zitat von TiGü (Beitrag 1118806)
Hör mal, wir können dir nicht die Grundlagen von (digitaler) Signaltheorie und -Verarbeitung beibringen, dass musst du schon selber tun.
Das Internet ist voller Informationen dazu.
Bspw. http://books.google.de/books?id=_Ep5...page&q&f=false
Seite 160 würde ich mir mal an deiner Stelle genauer anschauen.


also für die schöne Buchempfehlung lässt man sich ja gern mal runtermachen ! :-D
Ich nehms nicht persönlich. Aber danke, das Buch schaut wirklich gut verständlich geschrieben aus.


Zitat:

Zitat von TiGü (Beitrag 1118806)
Das ist sehr schön für dich, bringt dich aber keinen Deut weiter.

ich finde, Du bist sehr gefangen in Deinem Denken.
Was bitte hätte die FFT für Vorteile?
gar keine, weder für mich, noch für Dich.
der Goertzel Algorithmus ist sehr robust. Ich brauch keine Fensterung, nix .
im Gegenteil, jetzt lässt sich sehr simpel ein Sliding Goertzel Algo implementieren.

Zitat:

Zitat von TiGü (Beitrag 1118806)
daher auch keine Information über die notwendige Abtastfrequenz, so dass du diese so hoch wie möglich ansetzen musst.

zu hoch ist bei Finanzzeitreihen nicht sinnvoll. Alles eine Frage der "machbarkeit" und Umsetzbarkeit.


Zitat:

Zitat von TiGü (Beitrag 1118806)
Des Weiteren weißt du nicht die konkreten Werte der gesuchten Frequenzen, diese scheinen zufällig zu sein.
Du willst aber diese finden, über deren SNR.
Wenn irgendwelche Frequnzen über einen Peak sichtbar werden, also deutlich über dem allgemeinen Rauschen liegt, dann hast du die von dir gewünschte "Zyklik", richtig?

Zitat:

Zitat von TiGü (Beitrag 1118806)
Wenn du die gesuchten Frequenzen nicht genau weißt, dann hast du mit den Goertzel-Algorithmus das falsche Werkzeug gewählt.

Wiiiieso? .. er arbeitet perfekt !


Zitat:

Zitat von TiGü (Beitrag 1118806)
Ich hoffe du machst das nicht für eine Diplomarbeit oder ähnliches, denn dann hättest du ziemlich viel Zeit verplempert!

Du bist ganz schön überheblich, aber ich nehm es Dir nicht übel. ich bin Querdenker, jawohl ...

Dann die Preisfrage .. um Dich wieder runter zu bringen.
Nimm das Beispielprogramm von Peter. bastel eine FFT da rein. (aber bitte ohne Zerstückelung und Fensterung)
dann überlager 2 Schwingungen mit 2 Frequenzen. 50 und 100 Hertz.
einmal amplitude 3 und amplitude 4.

Und gib Dir mal schnell das Spektrum aus.
Schafft das die FFT genauso sauber, mathematisch korrekt wie der Goertzel?
(Bild im Anhang)
Und dann rekonstruiere die Funktion!
oder sind Handstände nötig? komische Hanning oder Blackman Fenster?

Und das wichtigste, bekommst Du die exakten Phasen und Amplituden dazu?
also kannst Du die Funktion aus Rekonstruieren?

TiGü 23. Aug 2011 21:26

AW: Goertzel Algorithmus (Frequenz + Phase)
 
http://www.scilab.org/products/scilab/download

Runterladen -> Installieren -> Öffnen
Im Menü auf 'Applications' klicken -> SciNotes

im Editorfenster folgendes eingeben:

Code:
clc
clf()

f1 = 50
f2 = 100
a1 = 3
a2 = 4
sample_rate = 1000

t = 0: 1/sample_rate : 1/8 * %pi

N = size(t,'*')
f = sample_rate * (0:(N/4))/N
n = size(f,'*')

w1 = 2 * %pi * f1
w2 = 2 * %pi * f2

y1 = a1 * sin(w1*t)
y2 = a2 * sin(w2*t)
y3 = y2 + y1

spekt = fft(y3)

ispekt = ifft(spekt)

subplot(311)
plot(t,y3);

subplot(312)
plot(f,abs(spekt(1:n)))

subplot(313)
plot(ispekt)
Abspeicheren -> auf den Play Button drücken -> Fertig!

Peter1999 23. Aug 2011 22:13

AW: Goertzel Algorithmus (Frequenz + Phase)
 
Also ich habe jetzt mal mit Absicht ein Weilchen nix mehr geschrieben und nur mitgelesen.

Wahrscheinlich bekomme ich jetzt auch Schläge für meine Meinung, aber egal.

stoxx, was immer du vor hast (mir ist es noch immer nicht zu 100% klar) ist scheinbar nicht "mal schnell" mit dem Abtippen eines bestehenden Algorithmus getan. Erst dachte ich, es ginge um eine diskrete Frequenz, inzwischen sind wir fast bei Breitband-Rauschsignalen. Jetzt kommt plötzlich auch noch die Filterung ins Spiel. Was denn da wieder: Quasi-Analogfilter ala Butterworth / Chebychev oder FFT-Filter? Hast du eigentlich eine Vorstellung, um wie viel schwieriger eine Rekonstruktion eines "beliegigen" Signals aus dem Frequenzbereich ist, wenn nach der Fenster-Zerstückelung wieder etwas brauchbares herauskommen soll.
Für mich schreit hier alles nach FFT (vergiss den Gortzel). Danach solltest du dich intensiv mit der spektralen Leistungsdichte beschäftigen, dann mit dem Leakage-Effekt (Fensterfunktionen), dann mit den Folgen der Fensterung (Amplitudenverfälschung!) und DANN anfangen zu programmieren. Die Frage, was du mit einer Phase willst, die logischerweise für jedes Zeitfenster (typische Überlappung 50 %, typische Größe 1024-4096 Samples) reine Willkür ist, hast du auch noch nicht klar beantwortet.

Das klingt vielleicht böse, aber man besucht ja nicht (nur) aus Spaß 1-4 Semester zur digitalen Signalverarbeitung. Das ist eben nicht ganz so einfach. Und mir stellt sich gerade die Frage, ob dieses Forum hier geeignet ist, eine Grundlagenvorlesung zu vermitteln.

Bitte nicht steinigen ;) , aber ich glaube, du hast inzwischen viele Hinweise für ein Selbststudium bekommen und hier wird sich niemand finden, der dir dein Programm schreibt.

Sorry ;)

stoxx 23. Aug 2011 22:24

AW: Goertzel Algorithmus (Frequenz + Phase)
 
Hi Tigü
gut .. ich glaub Dir auch so. :)
das mach ich später mal irgendann, scheint ein interessantes Programm zu sein.


wobei ich nicht weiß, wie dort die Fensterung stattfand ..
ich mag lieber sachen, in denen ich mich irgendwie auskenne.

.. es funktioniert, vielen Dank allen.

stoxx 23. Aug 2011 22:34

AW: Goertzel Algorithmus (Frequenz + Phase)
 
Zitat:

Zitat von Peter1999 (Beitrag 1119126)
Also ich habe jetzt mal mit Absicht ein Weilchen nix mehr geschrieben und nur mitgelesen.

Wahrscheinlich bekomme ich jetzt auch Schläge für meine Meinung, aber egal.

stoxx, was immer du vor hast (mir ist es noch immer nicht zu 100% klar) ist scheinbar nicht "mal schnell" mit dem Abtippen eines bestehenden Algorithmus getan. Erst dachte ich, es ginge um eine diskrete Frequenz, inzwischen sind wir fast bei Breitband-Rauschsignalen. Jetzt kommt plötzlich auch noch die Filterung ins Spiel. Was denn da wieder: Quasi-Analogfilter ala Butterworth / Chebychev oder FFT-Filter? Hast du eigentlich eine Vorstellung, um wie viel schwieriger eine Rekonstruktion eines "beliegigen" Signals aus dem Frequenzbereich ist, wenn nach der Fenster-Zerstückelung wieder etwas brauchbares herauskommen soll.
Für mich schreit hier alles nach FFT (vergiss den Gortzel). Danach solltest du dich intensiv mit der spektralen Leistungsdichte beschäftigen, dann mit dem Leakage-Effekt (Fensterfunktionen), dann mit den Folgen der Fensterung (Amplitudenverfälschung!) und DANN anfangen zu programmieren. Die Frage, was du mit einer Phase willst, die logischerweise für jedes Zeitfenster (typische Überlappung 50 %, typische Größe 1024-4096 Samples) reine Willkür ist, hast du auch noch nicht klar beantwortet.



Sorry ;)

Danke für die vielen Hinweise. interssante Stichworte.
Allerdings sagt mir der Text auch, dass Du mir meine eigenen Wünsche ausreden willst.
Na klar ist die Phase wichtig, ich muss doch relativ zum Bezugspunkt wissen, wo eine Schwingung startet.
Ich wollte gar nicht mehr wissen und nur den Goetzel Algorithmus zum Funktionieren bringen.
Er tut alles, was eine FFT auch kann, vielleicht etwas langsamer. Denkbar.
Für die Anwendungen habe ich schon Ideen, und das ist wichtig.

Wenn ich ein Signal habe, was Sinusförmig aussieht, dann wollte ich eben mal für die Erkennung nix selbst Gebasteltes, sondern einfach mal was anderes.
Leakage Effect gibts hier nicht, da ich ein großes Fenster betrachte, keine Zerstückelung.

stoxx 24. Aug 2011 01:45

AW: Goertzel Algorithmus (Frequenz + Phase)
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von TiGü (Beitrag 1119115)
http://www.scilab.org/products/scilab/download

Runterladen -> Installieren -> Öffnen
Im Menü auf 'Applications' klicken -> SciNotes

bevor ich ein halbes Gigabyte installiere .. kannst Du bitte nochmal schnell ein Screenshot vom Spektrumverlauf machen?

Ist der Spektrumverlauf wirklich auch so spitz verlaufend wie in meinem Bild?
oder runde Berge?
wie breit sind die zwei Bänder?
oder nur erkannte Frequenzen in Form von zwei Histogrammbalken?

Ich wette, mit der FFT bekommt man nur so einen Quatsch hin wie im Bild im Anhang, was man dann Glätten muss.
Ich weiß, ihr glaubt mir nicht, aber der Goertzel kann leakagefrei programmiert werden.
ich weiß es irgendwie einfach, ich weiß auch, wie ich den leakage Effekt vermieden habe, und ich denke, das geht nur bei diesem Algorithmus, sonst hätte man es bei de FFT schon längst getan, und müsste sich nicht mit Blackman und anderen Hamming Windows rumägern.
man, was da eine Wissenschaft draus gemacht wird .. tsss
Und vor allen Dingen hat man schon in der allerersten Stufe der Verarbeitung schon nicht mehr das Original Signal.
Ich denke, wenn es um die Auswertung von empfindlichen Daten geht, ist das sehr wichtig.
Wenn man nur ein Pipsignal erkennen will, dann ist das natürlich völlig egal.

nun gut :)
einfach vergleichen ob rund oder spitz :)

ich denke, alle bekommen nur sowas hin:

http://www.mstarlabs.com/dsp/goertzel/goertzel.html

(bin über die Arroganz gegenüber einem Nicht so Versierten und vermeintlich dummen Entwickler etwas verärgert, aber ich sage nicht, wie ich das gelöst habe, das Forum ist nicht dazu da, Expertenwissen zu vermitteln)
.. ich bin mir seehr sicher .. dass das der exakte Verlauf des Spektrums ist !

stoxx 24. Aug 2011 02:29

AW: Goertzel Algorithmus (Frequenz + Phase)
 
hier sieht man nochmal interaktiv, wie mit schwerem Gerät der Leakage Effect bearbeitet werden will.

http://heliso.tripod.com/java_hls/gccs/leakage.htm

(diese Hügel gibts bei meiner Goertzelprogrammierung nicht mehr)

Und so ganz trivial scheint es bei der normalen FFT nicht zu sein !
hier im Patent wird auch nur von "low leakage" gesprochen, nicht von komplett weg.

http://www.docstoc.com/docs/53506511...Patent-6882947


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:42 Uhr.
Seite 4 von 11   « Erste     234 56     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