Forum: Digitale Signalverarbeitung / DSP / Machine Learning Momentanfrequenz aus analytischem Signal ohne Arctan


von Burkhard K. (buks)


Angehängte Dateien:

Lesenswert?

Clay S. Turner schlägt hier 
http://www.claysturner.com/dsp/instantaneousfrequency.pdf ein Verfahren 
zur Ermittlung der Momentanfrequenz aus einem analytischen Signal vor, 
das charmanterweise ohne inversen Tangens, also nur mit Multiplikation, 
Addition und Subtraktion auskommt. Eine Begründung oder gar Herleitung 
gibt er nicht an, nur eine Art Gegenrechnung, die zeigt, dass für y(ft) 
= cos(ft) + jsin(ft) das Ergebnis zutrifft.

Gelten bestimmte Einschränkungen oder Randbedingungen für die Anwendung 
von Turners Formel? Und gibt es bestimmte Sonderfälle, die ähnlich wie 
beim Phase-Unwrapping bei der Berechnung mittels arctan(Q(t)/I(t)), 
gezielt behandelt werden müssen (Division durch Null ist bereits 
vermerkt).

von Signalverarbeiter (Gast)


Lesenswert?

Ich kann mir vorstellen, dass es ein Problem sein könnte, wenn gerade 
Nulldurchgänge herrschen. Zudem ist das Rauschen ein Problem, wenn 
mehrere Frequenzen vorkommen, denn in den Differenzialen stecken alle 
Frequenzen mit drin. Die Formel dürfte also nur dann etwas liefern, wenn 
die Frequenz konstant ist. Kannst es ja mal mit MATLAB durchexerzieren.

von zyxw (Gast)


Lesenswert?

> arctan(Q(t)/I(t))
Dafür gibt es atan2(y,x), das erledigt Nullwerte gleich mit.

von pA-philer (Gast)


Lesenswert?

Burkhard K. schrieb:
> Clay S. Turner schlägt hier
> http://www.claysturner.com/dsp/instantaneousfrequency.pdf ein Verfahren
> zur Ermittlung der Momentanfrequenz aus einem analytischen Signal vor,
> das charmanterweise ohne inversen Tangens, also nur mit Multiplikation,
> Addition und Subtraktion auskommt. Eine Begründung oder gar Herleitung
> gibt er nicht an, nur eine Art Gegenrechnung, die zeigt, dass für y(ft)
> = cos(ft) + jsin(ft) das Ergebnis zutrifft.

Hallo Burkhard,
die linke Seite der Gleichung in Deinem Foto zeigt zunaechst den 
Zusammenhang zwischen der momentanen Frequenz f(t) in Beziehung mit dem 
Phasenargument eines komplexwertigen Signals. Warum der Autor hier f 
verwendet, ist etwas unklar, eigentlich waere omega besser gewesen, da 
arg() sich auf radian bezieht. Dass der Zusammenhang pausibel ist, kann 
man z.B. sehen, wenn man sich ueberlegt, wie sich das Phasenargument 
eines Signals mit der Zeit veraendert und feststellt, dass die Phase das 
Integral des Frequenzwertes ist (fuer eine feste Frequenz z.B. nimmt die 
Phase konstant zu) und daher die Frequenz die Ableitung der Phase ist.

Zur Verdeutlichung des Zusammenhangs (es sind theta(t) Phasenargument 
zur Zeit t, omega(t) Frequenz zur Zeit t), beginnend zu einer Zeit t_0:
Das Phasenargument theta(t) z.B. einer Sinusfunktion sin(theta(t)) 
verhaelt sich wie ein Kondensator, der geladen wird. Bei konstanter 
Frequenz, omega(t) = const, waechst das Phasenargument linear. Fuer 
omega(t) = 0 bleibt die Phase konstant.

Die rechte Seite der Gleichung in Deinem Screenshot zeigt die Verwendung 
der arctan Funktion zur Bestimmung des Phasenargumentes (arg). Der Autor 
nutzt die Ableitung der atan-Funktion
und die Ketten- und Quotientenregel zur Differentation.
Zunaechst ergibt die Kettenregel (= auessere Ableitung * innere 
Ableitung):
Erweiterung des Doppelbruches mit I(t)^2 und Anwendung der 
Quotientenregel (also (u/v)' = (u'v - uv')/v^2) :
und Kuerzen ergibt:
die Gleichung des Autors aus Deinem Paper.

Der Autor zeigt mit Beispielrechnung, dass das fuer eine lineare 
Phasenfunktion gilt. Es gilt aber auch fuer andere stetige 
Phasenfunktionen. Es verbleibt immer die zeitliche Ableitung  des 
Phasenarguments theta(t), wenn I = cos und Q = sin und wieder die 
Kettenregel angewendet wird:
Die Ableitung der Phasenfunktion entspricht der Momentanfrequenz
 in Radian.

Der Autor setzt in seinem Beispiel
 und erhaelt f, die Frequenz (in rad).

Leider fuerchte ich, dass das Ganze fuer reale Signale nur begrenzt 
nuetzlich ist, da ein einwandfreies Quadratursignal notwendig ist. 
Verstaerkungsfehler zwischen I und Q, Verzerrungen von Sin- und 
Cos-Funktion, imperfekte Orthogonalitaet von I und Q, Phasenrauschen 
(gerade in Verbindung mit Differentation!), geringe Signalamplituden (= 
numerische Instabilitaet),
werden alle massgeblichen Einfluss auf das Ergebnis haben. Hier ist eine 
Simulation Deines Anwendungsfalls aber sicher erhellend.

Viele Gruesse & viel Erfolg!

von J. S. (engineer) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ui, das Frequenz-Schätzeisen von Herrn Turner. Kommt alle Jahre wieder 
mal hoch.

Wie pA-philer schon angedeutet hat, steckt da noch ein Faktor 2*PI drin.

Die Formel ist in soweit korrekt, als dass sie sehr langsame 
Frequenzänderungen noch richtig auflöst. Wenn man aber moduliert, wie 
z.B. bei Audio-Synthese, ist das sofort am Anschlag. Siehe Grafik. Grün 
ist die Frequenzvorgabe, blau der Inphase-Anteil, also die Amplitude des 
Realteils und orange das, was die Formel ausgibt. Da steckt letztlich 
die Beschleunigung, also der HF-Anteil des Signals mit drin. Ab dem 
Punkt, ab dem die Frequenz nach dem Horizontalstrich langsam abfällt und 
wieder auf statisch geht, kommt die Turnerformel wieder hin. Das Ganze 
wird auch um so stimmiger, je weiter man die Betrachtungsperiode fasst, 
weil damit HF wegintegriert wird. Dabei läuft man aber Richtung Fs=f und 
die müsste man vorher wissen, damit es stimmt.

Die Formel lässt sich aber entsprechend erweitern, indem mehr Frequenzen 
hinzu nimmt. Schon durch die Nutzung des zweiten und dritten 
Differentials wird das besser gefasst. Natürlich ist auch das keine 
echte Lösung, weil die Anzahl der Terme begrenzt ist, aber wenn man die 
Bandbreite des Signals kennt, geht da einiges. Man kann die Frequenzen 
auch vorher separieren, wenn man eine kennt und den Rest auswerten. Auch 
dafür gibt es Anwendungen. Nur ist es halt so, dass man recht schnell zu 
dem Punkt kommt, dass ein Görtzel mit autoadaptiven Frequenzen weniger 
Aufwand macht.

von Burkhard K. (buks)


Angehängte Dateien:

Lesenswert?

Danke soweit für Eure Antworten.

zyxw schrieb:
> Dafür gibt es atan2(y,x), das erledigt Nullwerte gleich mit.
atan oder arctan ist in HW immer etwas umständlich (Stichwort: CORDIC).

pA-philer schrieb:
> Der Autor
> nutzt die Ableitung der atan-Funktion
> \frac{d}{dx} \arctan(x) = \frac{1}{1+x^2}
> und die Ketten- und Quotientenregel zur Differentation.
Danke, der Hinweis auf die Kettenregel hat den Groschen fallen lassen.

pA-philer schrieb:
> Verstaerkungsfehler zwischen I und Q, Verzerrungen von Sin- und
> Cos-Funktion, imperfekte Orthogonalitaet von I und Q, Phasenrauschen
> (gerade in Verbindung mit Differentation!), geringe Signalamplituden (=
> numerische Instabilitaet),
> werden alle massgeblichen Einfluss auf das Ergebnis haben.
Welchen Einfluss versuche ich gerade herauszufinden. Ich denke, dass 
eine Simulation mit Matlab oder Co. dafür weniger geeignet ist, da dort 
mit mindestens 32bit breiten FP-Zahlen gerechnet wird. Ich hab daher 
einen POC auf einem Artix-FPGA Board versucht:

  * Sweep-Generator mit einem 16bit NCO
  * zwei FIR-Filter nach Turners ASG-Vorschlag: 
http://www.claysturner.com/dsp/ASG.pdf
  * ein VHDL-Modul zum Errechnen der Frequenz
  * Ausgabe der errechneten Frequenz über einen 16 bit DA

Der abgebildete Sweep fährt in einer Millisekunde von 96 kHz auf 24 kHz, 
wobei der untere Frequenzbereich bereits im unteren Transitbereich der 
Filter liegt. Samplingrate ist 2.5 MHZ.

Das generierte Frequenzsignal sieht auf den ersten Blick nicht völlig 
unbrauchbar aus, die Peaks zwischendrin waren wohl zu erwarten. 
(Allerdings wird der DA einiges geglättet haben).

Das das Signal eine gewisse Mindestamplitude haben muss, ist klar. 
Nulldurchgänge dagegen scheinen kein Problem zu sein.

Jürgen S. schrieb:
> Die Formel ist in soweit korrekt, als dass sie sehr langsame
> Frequenzänderungen noch richtig auflöst.
Mein Interesse gilt letztlich Ultraschall-Sweeps mit 1/4 bis 1/20 der 
Samplerate. Die höheren Frequenzen muss ich mir also erst noch 
anschauen.

Jürgen S. schrieb:
> Wie pA-philer schon angedeutet hat, steckt da noch ein Faktor 2*PI drin.
Danke auch für diesen Hinweis - das VHDL-Modul muss ich noch 
entsprechend anpassen.

Gruß,
Burkhard

von J. S. (engineer) Benutzerseite


Lesenswert?

Burkhard K. schrieb:

> Der abgebildete Sweep
... hat keine Komponenten 2. oder gar 3. Ordnung

> Das generierte Frequenzsignal sieht auf den ersten Blick nicht völlig
> unbrauchbar aus,
... es hat folgerichtig einen statischen offset, welcher der 1. 
Ableitung der Modulation entspricht. Die Ableitung von etwas Linearem 
ist ein Offset. In meinem Diagramm kann man den sich gegen Null 
hinbewegenden Offset im hinteren Schwanz der Kurve erkennen, wenn die 
Vorgabefrequenz asymtotisch gegen 5 Hz geht.


> Mein Interesse gilt letztlich Ultraschall-Sweeps mit 1/4 bis 1/20 der
> Samplerate.
... d.h. es gibt nicht viele Perioden zum Messen. Trotzdem müsste 
Görztel funktionieren.

Ich sehe nicht, dass die Turnermethode für Deine Anwendung geeignet ist. 
Entweder nimmt man ein entsprechendes Dopplerfilter oder man nimmt die 
Oberwellen mit in Betracht und beseitigt deren Einfluss. Ich habe das so 
noch nie irgendwo publiziert gesehen, aber eigentlich liegt es auf der 
Hand:

Ich kann Dir hier die Lösung nicht auf dem Silbertablett servieren, weil 
sie für einen Kunden entwickelt wurde, der dafür bezahlt hat. Ich habe 
sie auch nicht in VHDL parat, weil das noch zu meiner "C-Zeit" gebaut 
wurde, also im letzten Jahrtausend. Du kannst das aber leicht selber 
schreiben:

Denken wir nochmal an die Schule Klasse 10 und die 2. Ableitung vom 
Sinus. Da kam ja das Omega als Quadrat rein, weil zweimal abgeleitet 
wurde. Baut man diese Gleichung auf, führt es auf ein Gleichungssystem 
mit z.B. 3 Gleichungen für Omega, Omega2 und Omega3.

Dann muss man sich noch überlegen, wie man ein LGS dieser Art löst, ohne 
eine der 3.Nullstellen zu raten, wie man es in Klasse 11 macht. 
Funktionieren kann es zielsicher ohne Kenntnis der Werte mit einem 
umgestellten Heron und fortwährender Iteration. Ab dann Gauss-Algo 
Klasse 9.

Wenn ich mir aber DIESE Anwendung so ansehe, bleibe ich bei der 
Behandlung im Frequenzbereich. Also letztenendes, wenn nichts mehr geht, 
FFT und Diskriminierung der nicht benötigten Frequenzen und Ermittlung 
der dominanten peaks. Daraus kann man dann die tatsächliche Frequenz gut 
und sicher bestimmen. 3-4 Wellenpakete der Grundwelle sollten reichen.

von Harald (Gast)


Lesenswert?

Burkhard K. schrieb:
> atan oder arctan ist in HW immer etwas umständlich (Stichwort: CORDIC).

Nicht unbedingt:
Beitrag "Effiziente Implementierung von ARCTAN fuer uCs"

von Jemand (Gast)


Lesenswert?

Jürgen S. schrieb:
> Schule Klasse 10 und die 2. Ableitung vom Sinus

Pffff, hahahaha! Schön wärs!

Jürgen S. schrieb:
> Gauss-Algo Klasse 9.

Absolut realitätsfremd.

von J. S. (engineer) Benutzerseite


Lesenswert?

Jemand schrieb:
> Jürgen S. schrieb:
>> Schule Klasse 10 und die 2. Ableitung vom Sinus
> Pffff, hahahaha! Schön wärs!

>> Gauss-Algo Klasse 9.
> Absolut realitätsfremd.

Kurvendiskussion ist laut Lehrplan überwiegend Klasse 11, das stimmt. 
Ich kann mich aber erinnern, dass wir in der 10.2 mal eine Arbeit dazu 
hatten. Ich weiss es auch deshalb, weil ich die Ableitung des Sinus für 
meinen Tongenerator im C64-Synthesizer gebraucht und eingebaut habe und 
den kann ich exakt dem Herbst 1984 zuordnen.

Trigonometrie und der Umgang mit Sinus und Kreisfunktionen ist definitiv 
Stoff der 10. Da bin ich ziemlich sicher. Auch beim Gauss-Algo bin ich 
sicher, dass ich das Jahr richtig erinnere, weil ich mal einen 
Nachhilfeschüler hatte, dem ich das erklärt habe und der war aus der 9. 
Klasse. Da kommen quadratische Gleichungen und ihre Lösungen. Aufgaben 
dieser Art fanden sich zudem im Bogen des bundesweit durchgeführten 
Mathematikwettbewerbs und auch der war in diesem Jahr. Möglich, dass 
sich da was verschoben hat und man das im Zuge von G8 verändert hat.

von Detlef _. (detlef_a)


Angehängte Dateien:

Lesenswert?

Hallo,

hier habe ich die Berchnung der Frequenz aus samples beschrieben:
Beitrag "Frequenz, Amplitude und Phase eines Sinussignals bestimmen"

Das Verfahren läßt sich auch auf das von Burkhard K. geschilderte 
Problem anwenden.
das ist noch sehr empfindlich und man muss bisschen fummeln, aber 
prinzipiell sollte das gehen. Bei Interesse gerne Details.

Cheers
Detlef

clear
lo=24000;
hi=96000;
fa=2.5E6;
n=fa/1000; %sweep geht ca. 1ms
diffang=((((0:n-1)/n)*(lo-hi))+hi)/fa;
sig=exp(j*2*pi*cumsum(diffang));
plot(real(sig),'.-');
sig = real(sig);

s1=sig(1:n-2)+sig(3:n);
s2=sig(2:n-1);

sa=1:n-2;
ind=find(abs(s2)<0.1);
s1(ind)=[];
s2(ind)=[];
sa(ind)=[];

fr=((s1./s2)/2);
ind=find(fr>1) ;fr(ind)=[];sa(ind)=[];
ind=find(fr<-1);fr(ind)=[];sa(ind)=[];

fu = acos(fr);
plot(sa,fa*fu/(2*pi*1000),'r.-');
grid
title('rückgerechnete Frequenz');
xlabel('sample #');
ylabel('frq [kHz]');

return

von chris (Gast)


Lesenswert?

Sieht eigentlich recht genau aus. Die Frage wäre, wie ist das mit der 
Berechnung in 32bit Integer.

von Detlef _. (detlef_a)


Lesenswert?

chris schrieb:
> Sieht eigentlich recht genau aus. Die Frage wäre, wie ist das mit der
> Berechnung in 32bit Integer.

Das ist das geringste Problem, geht schon. Rauschen ist ein Problem. 
Ausserdem ist das bei der hohen oversampling rate empfindlich. 
Eigentlich müsste man die Stellen wo man schaut weiter auseianderziehen. 
Dann schmiert die Momentanfrequenz aber. Unter Annahme einer linearen 
Frequenzänderung liesse sich vllt.  die Start/StopFrequnz gut und genau 
finden.

Cheers
Detlef

von zyxw (Gast)


Lesenswert?

Jürgen S. schrieb:
> Möglich, dass
> sich da was verschoben hat und man das im Zuge von G8 verändert hat.
Das glaube ich nicht. Wenn, dann haben sie es eher komprimiert. Auch 
jetzt lösen sie in der 8. schon Gleichungssysteme:
http://www.isb-gym8-lehrplan.de/contentserv/3.1.neu/g8.de/index.php?StoryID=27112

Wörtlich heisst es:

Lösungsverfahren für lineare Gleichungssysteme sind ... als Hilfsmittel 
zur Lösung anwendungsorientierter Aufgabenstellungen ... zu sehen. Auf 
das Lösen von Gleichungssystemen wird nicht nur in der Mittelstufe 
zurückgegriffen (z. B. Bestimmung der Parameter einer Parabelgleichung 
bei Modellierungsaufgaben), sondern auch in der Oberstufe im Rahmen der 
analytischen Geometrie; die EPA Mathematik fordert unter der Leitidee 
Algorithmus das ?Lösen linearer Gleichungssysteme? verbindlich ein.

... und in der 10. haben sie auch Trigo und Grenzwerte schon gehabt:
http://www.isb-gym8-lehrplan.de/contentserv/3.1.neu/g8.de/index.php?StoryID=26221

Bisher haben die Schüler ganzrationale, einfache gebrochen-rationale und 
trigonometrische Funktionen sowie Exponentialfunktionen kennengelernt. 
Sie wiederholen Grundbegriffe und analysieren vertiefend verschiedene 
Eigenschaften ausgewählter Graphen. Dabei ermitteln sie beispielsweise 
Nullstellen von Funktionen und wiederholen Techniken zur Lösung von 
Gleichungen. Anhand des unterschiedlichen Verhaltens von Funktionen an 
den Rändern ihres jeweiligen Definitionsbereichs gewinnen die Schüler 
aus der Anschauung heraus einen Grenzwertbegriff und verwenden erstmals 
systematisch die Grenzwertschreibweise.


@Jemand: Warst Du zufällig in Bremen in der Schule?

von J. S. (engineer) Benutzerseite


Lesenswert?

Detlef _. schrieb:
> Das ist das geringste Problem, geht schon. Rauschen ist ein Problem.
> Ausserdem ist das bei der hohen oversampling rate empfindlich.
> Eigentlich müsste man die Stellen wo man schaut weiter auseianderziehen.
> Dann schmiert die Momentanfrequenz aber. Unter Annahme einer linearen
> Frequenzänderung liesse sich vllt.  die Start/StopFrequnz gut und genau
> finden.
Das ist das Problem. Man muss eine Annahme machen. Ich nehme an, dass 
das Verfahren keine besseren Werte liefert, als C.S.T.?

von Burkhard K. (buks)


Lesenswert?

Detlef _. schrieb:
> Das ist das geringste Problem, geht schon. Rauschen ist ein Problem.
> Ausserdem ist das bei der hohen oversampling rate empfindlich.

Die hohe Samplerate in meinem Beispiel ist durch den DA-Wandler bestimmt 
- in der angedachten Anwendung wird sie wohl um einen Faktor 5 niedriger 
(im Verhältnis zum interessierenden Frequenzbereich) ausfallen. Reale 
Signal werden auch logarithmische Sweeps sein - dass muss ich meinem 
Sweepgenerator erst noch beibringen.

Detlef _. schrieb:
> ind=find(abs(s2)<0.1);
> s1(ind)=[];
> s2(ind)=[];
> sa(ind)=[];
>
> fr=((s1./s2)/2);
> ind=find(fr>1) ;fr(ind)=[];sa(ind)=[];
> ind=find(fr<-1);fr(ind)=[];sa(ind)=[];

Sehe ich das richtig, dass Du unpassende Elemente aus den Vektoren 
entfernst? Also nicht alle Abstände equidistant sind?

von A. F. (chefdesigner)


Lesenswert?

@Detlef: Funktioniert das nur bei Sweeps oder auch stärker sich 
ändernden Signalen? Wo ist der Vorteil gegenüber der Methode, die 
Burkhard zuerst benannt hat? Ich meine, die funktioniert ja eigentlich 
recht gut und scheint mir einfacher.

: Bearbeitet durch User
von Detlef _. (detlef_a)


Lesenswert?

Jürgen S. schrieb:
> Detlef _. schrieb:
>> Das ist das geringste Problem, geht schon. Rauschen ist ein Problem.
>> Ausserdem ist das bei der hohen oversampling rate empfindlich.
>> Eigentlich müsste man die Stellen wo man schaut weiter auseianderziehen.
>> Dann schmiert die Momentanfrequenz aber. Unter Annahme einer linearen
>> Frequenzänderung liesse sich vllt.  die Start/StopFrequnz gut und genau
>> finden.
> Das ist das Problem. Man muss eine Annahme machen. Ich nehme an, dass
> das Verfahren keine besseren Werte liefert, als C.S.T.?

Doch, für einen sich nicht ändernden Sinus liefert das bessere 
Ergebnisse weil man die Schwierigkeiten mit dem Hilbert Filter für die 
Erzeugung des analytischen Signals nicht hat. Für den sweep habe ich das 
nicht untersucht.

>>>>>>>>>>>>
Die hohe Samplerate in meinem Beispiel ist durch den DA-Wandler bestimmt
- in der angedachten Anwendung wird sie wohl um einen Faktor 5 niedriger
(im Verhältnis zum interessierenden Frequenzbereich) ausfallen. Reale
Signal werden auch logarithmische Sweeps sein - dass muss ich meinem
Sweepgenerator erst noch beibringen.
<<<<<<<<<<<

Ok, das ist auch nicht wirklich ein Problem,

>>>>>>>>>>>>>>>>>>>
Sehe ich das richtig, dass Du unpassende Elemente aus den Vektoren
entfernst? Also nicht alle Abstände equidistant sind?
<<<<<<<<<<<<<<<<

Ja, ich schmeisse dort Werte weg. Wie ich in dem zitierten Beitrag 
gesagt habe lautet die Rekursion für einen Sinus:
sig(n+1)=2*cos(w)*sig(n)-sig(n-1);
Daraus läßt sich cos(w) berechnen. Dazu muss ich durch sig(n) 
dividieren. Das wird sehr empfindlich wenn sig(n) betragsmäßig klein 
ist, deswegen schmeiss ich die Werte weg. Ausserdem dürfte das Ergebnis 
nie betragsmäßig grösser als 1 werden ( ich muss den acos bilden), 
deswegen schmeiss ich diese Ergebnisse auch weg. cos(w) ist in diesem 
Fall ja nicht constant. Wenn es das ist, also ich eine konstante Frequnz 
suche, wird die Numerik wesentlich besser, weil ich dann ein sehr stark 
überbestimmtes Gleichungsystem kriege und das supergut lösen kann. Also 
das Verfahren reagiert selbst bei synthetischen Daten schon empfindlich, 
mit realen Daten wird das nicht besser werden. Da muss man sich dann 
ggf. noch was schleues überlegen.

>>>>>>>>>>>>>>
@Detlef: Funktioniert das nur bei Sweeps oder auch stärker sich
ändernden Signalen? Wo ist der Vorteil gegenüber der Methode, die
Burkhard zuerst benannt hat? Ich meine, die funktioniert ja eigentlich
recht gut und scheint mir einfacher.
<<<<<<<<<<<<<<
Was sind 'stärker sich ändernde Signale'? Das Verfahren geht erstmal von 
nem Sinus aus, ich habe das jetzt mal Richtung sweep gebogen. Wohin man 
das sonst noch hinbiegen kann weiß ich nicht. Der Vorteil liegt, wie 
oben schon erwähnt darin, dass man kein Hilbert Filter benötigt um das 
analytische Signal zu erzeugen. Hilbert breitbandig ist nicht so 
schlicht.

@Burkhard: Schick mal reale Daten als File, wenn Du die hast. Dann kann 
ich nochmal basteln.

Cheers
Detlef

von J. S. (engineer) Benutzerseite


Lesenswert?

Detlef _. schrieb:
> Doch, für einen sich nicht ändernden Sinus liefert das bessere
> Ergebnisse weil man die Schwierigkeiten mit dem Hilbert Filter für die
> Erzeugung des analytischen Signals nicht hat. Für den sweep habe ich das
> nicht untersucht.
Die Formel geht halt davon aus, dass die I und Q vorliegen. Das tun sie 
aber oft nicht, das stimmt.


Andi F. schrieb:
> Ich meine, die funktioniert ja eigentlich
> recht gut und scheint mir einfacher.
Ja, theoretisch funktioniert die Kurve, aber praktisch eben nicht. :-)

Das liegt daran, dass die Annahme, auf der die Formel basiert, so gut 
wie nie stimmt und wenn sie mal stimmt, dann eben für statische 
Frequenzen. Dann aber kann man auch einfacher messen. Die Formel selber 
ist trival, aber eben nicht so richtig nutzbringend. Das liegt auch 
daran, dass man mit einfacher digitaler Signalverarbeitung, so wie wir 
es im Zeitbereich betreiben, so ohne Weiteres keinen 
Differentialquotienten bilden kann.

Dieser ist aber in der Formel vorgeben. Was man mit der einfachen 
Differenziation mit "Z-1" bekommt, ist ja immer der Differenzenquotient. 
Notwendig wäre aber der Grenzübergang mit Limes und der ist so nur 
analytisch leistbar. (Ich verweise wieder auf Klasse 10).

Man macht also einen systematischen Abtastfehler im Sinne der 
Differenziation im Bezug auf die Formel sowie einen weiteren 
willkürlichen, zufälligen im Bezug auf die Annahme einer Grenzfrequenz. 
Ersterer produziert einen falschen Wert, wenn überhaupt Oberwellen 
enthalten sind, Letzterer generiert einen alias-Fehler infolge der 
Nichtrepräsentation derselben, soweit sie quantitativ vorhanden sind. 
Fehler 2 kann man abhaken, wenn die Abtastung genügend groß ist, Fehler 
1 hingegen nur dann, wenn die Oberwellen gering sind.

So schön und einfach die Formel ist, man kann sie so kaum einsetzen. Das 
hat Herr Turner von mir seinerzeit im DSP Forum auch bereits erläutert 
bekommen:-)

Die weitergehende Optimierung hatte ich angedeutet. Bei den meisten 
Verfahren, die wir in der Praxis haben, kommen Quadrate und vereinzelt 
Kubische der Frequenzen systematisch vor. Der Rest ist meistens 
Verzerrung durch Verzögerung oder Begrenzung, bzw Gleichrichtung etc. 
Wenn man an das Thema mit Omega hoch 3 herangeht, hat man Chancen, viele 
Fälle zu erschlagen. Es bleibt dann die Thematik der Nichtlinearität, 
die bei einem Gleichrichtersignal aus einem Trafo rasch eine X4 erzeugt, 
sowie die Messfehler infolge von Rauschen.

Dazu muss man über bestimmte Bereiche integrieren, um die richtigen 
Frequenzen / Perioden zu erwischen und Brumm-Störungen rausrechnen, 
Spikes aus Hochvoltüberschlägen überlesen, und die Rechnung für mehrere 
Abschnitte machen, gfs Häufungen bilden und die ermittelte Frequenz über 
Medianstrategien ermitteln. Das dürfte auch bei Detlefs Methode nötig 
sein.

von Detlef _. (detlef_a)


Lesenswert?

>>>>>>>>>>>>>>>>>
Dazu muss man über bestimmte Bereiche integrieren, um die richtigen
Frequenzen / Perioden zu erwischen und Brumm-Störungen rausrechnen,
Spikes aus Hochvoltüberschlägen überlesen, und die Rechnung für mehrere
Abschnitte machen, gfs Häufungen bilden und die ermittelte Frequenz über
Medianstrategien ermitteln. Das dürfte auch bei Detlefs Methode nötig
sein.
<<<<<<<<<<<<<<

Ja, das kann ich bestätigen. Ich schneide mit der Methode seit langer 
Zeit die Netzfrequenz mit. Rauschen ist überhaupt kein Problem. 
Impulsförmige Störer so lala, die hole ich mit nem Medianfilter raus. 
Begrenzt wird die Genauigkeit/Schnelligkeit durch die Oberwellen. Da 
muss ich massiv filtern, so 90dB afair. Dieses Filter bestimmt dann 
auch, wie schnell ich eine Frequenzänderung sehe.

Cheers
Detlef

von J. S. (engineer) Benutzerseite


Lesenswert?

Das würde ich aber eher mit einem Filter machen, das 49,50,51 Herz und 
Oberwellen von 50 haben. Das wäre einfacher, denke ich.

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.