Forum: Digitale Signalverarbeitung / DSP / Machine Learning Ableitung von gesampleten Werten


von Mirco (Gast)


Lesenswert?

Hallo,
mittels ADC sind Daten aufgenommen worden, von denen die Ableitung 
berechnet werden soll. Sie Sample-Rate ist konstant.

Wenn ich den Ansatz über den Differenzenquotienten nehmen wie
f'(x) = f(x+h)/2h - f(x-h)/2h, wobei h = 1 ist, ist der Fehler recht 
groß. Wie man leicht am Beispiel von f(x) = x^3 überprüfen kann. Laut 
Numerik sollte h deutlich kleiner als 1 gewählt werden um gute 
Ergebnisse zu erzielen. Leider sind nur die aufgenommenen Werte 
vorhanden so dass h=1 ist. Man könnte die Messwerte Interpolieren um so 
ein kleineres h zu erzeugen, was jedoch eine deutliche Erhöhung des 
Rechenaufwand bedeuten würde. Was gibt es für Möglichkeiten? Über Tipps 
oder weitere Suchbegriffe wäre ich sehr dankbar.

Gruß Mirco

von alex (Gast)


Lesenswert?

differenz zwischen 2 messwerten ist doch d nach dt, dabei ist der 
zeitabstand dt konstant, wenn deine samplerate kostant ist ...

von Klaus W. (mfgkw)


Lesenswert?

Mirco schrieb:
> Man könnte die Messwerte Interpolieren um so
> ein kleineres h zu erzeugen,

Wenn du die Werte linear interpolierst bekommst, du trotz des
höheren Aufwands im besten Fall die gleichen Werte.
Du berechnest doch dann die Steigung eines kürzeren Stücks
derselben Gerade.

Bessere Werte kannst du nur bekommen, indem du nicht eine
Gerade durch 2 Punkte nimmst, sondern eine Kurve höherer Ordnung
durch 3 (Parabel) oder mehr Punkte legst und deren Steigung
an der gesuchten Stelle berechnest.
Der Aufwand dafür ist dann aber auch nicht kleiner, vor allem
wenn man nicht stumpf jeden gemessen Zappler zu einer wilden
Kurve aufgebauscht haben will...

von Mirco (Gast)


Lesenswert?

Für die aufgenommenen Messwerte spielt es keine Rolle wie die 
Sample-Rate ist. Man könnte das Problem mit einem Vektor vergleichen, 
der in Matlab abgeleitet werden soll.

Das dt wird doch beim Differenzenqutionen durch lim h->0 erreicht. Da 
ich jedoch keine Werte zwischne den Messpunken habe kann ich h nicht 
kleiner werden lassen. Deswegen war die Überlegung, durch Interpolation 
weitere Messwerte zu erzeugen, so dass h kleiner werden kann.

von Mirco (Gast)


Lesenswert?

Klaus Wachtler schrieb:
> Bessere Werte kannst du nur bekommen, indem du nicht eine
> Gerade durch 2 Punkte nimmst, sondern eine Kurve höherer Ordnung
> durch 3 (Parabel) oder mehr Punkte legst und deren Steigung
> an der gesuchten Stelle berechnest.
> Der Aufwand dafür ist dann aber auch nicht kleiner, vor allem
> wenn man nicht stumpf jeden gemessen Zappler zu einer wilden
> Kurve aufgebauscht haben will...

Richtig, lineare Interpolation bringt nicht. Spline oder höhere Ordnug 
wäre interessant, aber das Erhöht deutlich den Aufwand. Es muss doch 
noch was anderes geben.

von Grrrr (Gast)


Lesenswert?

Mirco schrieb:
> Wenn ich den Ansatz über den Differenzenquotienten nehmen wie
> f'(x) = f(x+h)/2h - f(x-h)/2h, wobei h = 1 ist, ist der Fehler recht
> groß. Wie man leicht am Beispiel von f(x) = x^3


Erstmal ist ein Differenzenquotient allein nicht ausreichend, für die 
Ableitung. Du brauchst die links- und rechtsseitige Ableitung.
Ob die Funktion an sich differenzierbar ist, ist noch eine andere Frage, 
das lassen wir mal jetzt.

Dann vergleichst Du die Werte die sich bei einsetzen in die symbolisch 
abgeleitete Funktion und bei einsetzen in die numerisch abgeleitete 
Funktion ergeben. Das kann, wie Du Dich sicherlich erinnern wirst nicht 
hinhauen, denn die symbolische Ableitung ist ein Grenzwertprozess von 
dessen delta du mit h = 1 unendlich weit weg bist (na jedenfalls bis zum 
Epsilon). ;-)
Insofern ist Deine Argumentation zwar an sich richtig inspiriert, aber 
nicht zu Ende geführt.

Die Interpolation wiederrum führt Dich wahrscheinlich in eine andere 
Sackgasse. Interpolierst Du nun linear, oder sonstwie (transzendent, 
polynom) prägst Du den Werten möglicherweise einen völlig anderen 
Verlauf auf, als der beschreibenden Gleichung entsprechen würde. Du 
müsstest also zumindest in genügender Näherung die Entstehung Deiner 
Werte beschreiben können um eine sinnvolle Interpolation auswählen zu 
können.
An sich wählt man die Abtastrate von vorne herein so, das die Ableitung 
ausreichend aufgelöst und damit nützlich ist.

Erkläre am besten mal wozu das Ganze gut ist.

von Grrrr (Gast)


Lesenswert?

Mirco schrieb:
> Es muss doch
> noch was anderes geben.

Wie alt bist Du? Was ist das? Dein (verzeih', es ist nicht so hart 
gemeint wie es klingt) Kinderglauben? Das es für jedes Problem eine 
Lösung gibt?

Das kannst Du Dir abschminken. Höchstens kann man sich unter Inkaufnahme 
von Kompromissen dem Ideal nähern. Aber auch das ist nicht immer 
möglich.

von Martin (Gast)


Lesenswert?

Berichte doch einmal was du erreichen möchtest.

von Mirco (Gast)


Lesenswert?

Grrrr schrieb:
> Wie alt bist Du? Was ist das? Dein (verzeih', es ist nicht so hart
> gemeint wie es klingt) Kinderglauben? Das es für jedes Problem eine
> Lösung gibt?

Da ich sicher nicht der erste bin, der Messwerte ableiten muss, wird es 
auch sicher mehrere Wege zum Ziel geben!

Es sollen Mel-Frequenz-Cepstrum-Koeffizienten (MFCC) berechnet werden. 
Es handelt sich dabei um Audio-Samples die mit 16kHz abgetastet worden 
sind. Anschließend folgt ein FIR um höhere Frequenzkomponenten 
anzuheben, Hamming-Window, FFT, abs^2, Log, Mel-Filterung, DCT und 
anschließend soll die erste und zweite Ableitung berechent werden. Nach 
der DCT werden alle Samples bis auf die ersten 13 verworfen um so eine 
Tiefpass-Filterung zu erzeugen.

von Grrrr (Gast)


Lesenswert?

Mirco schrieb:
> Da ich sicher nicht der erste bin, der Messwerte ableiten muss, wird es
> auch sicher mehrere Wege zum Ziel geben!

Das hört sich schon vernünftiger an. ;-)

> Es sollen Mel-Frequenz-Cepstrum-Koeffizienten (MFCC) berechnet werden.

OK. Ich nehme an, Du beziehst Dich auf das folgende Dokument: 
http://www5.informatik.uni-erlangen.de/fileadmin/Persons/NiemannHeinrich/klassifikation-von-mustern/m00-www.pdf#Page=213

Soweit ich das erkennen kann, werden hier wirklich die Differenzen 
berechnet und später ausgewertet. Nicht jedoch Zwischenwerte gebildet. 
Warum meinst Du Zwischenwerte bilden zu müssen?

von Mirco (Gast)


Lesenswert?

Ich habe die Implementierung der Ableitung einfach mit bekannten 
Funktionen getested und mir war der Fehler zu groß. Dann bin ich auf die 
Suche gegangen...
Das Dokument kannte ich noch nicht, aber Formel 3.6.27 und 3.6.28 
bestätigen meine Vorgehensweise. Danke

von Grrrr (Gast)


Lesenswert?

Mirco schrieb:
> Das Dokument kannte ich noch nicht, aber Formel 3.6.27 und 3.6.28
> bestätigen meine Vorgehensweise.

Gerade das meine ich nicht, wie ich oben geschrieben habe. Da stehen nur 
Differenzen, keine Differenzenquotienten oder gar Ableitungen.

von Grrrr (Gast)


Lesenswert?

An anderer Stelle, nämlich S. 213 ist von Ableitungen die Rede und 
insofern, als die Differenz von Abtastwerten die Information über die 
Ableitung enthält, ist das irgendwie eine Art Ableitung. Aber im 
strengen Sinne sehe ich keine und auch keine Zwischenwertbildung.

von Klaus W. (mfgkw)


Lesenswert?

Wenn du ohnehin eine FFT machen musst, dann kann man die
Ableitung (erste ebenso wie analog alle weiteren) auch gleich
im Frequenzbereich machen.
Da die Ableitung von sin ja der cos ist und die Ableitung vom
cos der -sin, kann man einfach anhand der Koeffizienten aus der
FFT die Koeffizienten der Ableitung bestimmen durch Tauschen und
teilweise Negieren der Koeffizienten.
Das a0 wird einfach zu 0 für die Ableitung.

von Peter D. (pdiener) Benutzerseite


Lesenswert?

Im Zeitbereich kann man durch Anwendung geeigneter Filter näherungsweise 
eine Ableitung bilden.
Siehe auch
http://www.rtm.tu-darmstadt.de/ehemalige_mitarbeiter/~vogt/docs/wolfram_vogt_2002_at.pdf

Grüße,

Peter

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Der englische Wikipediatext zum Thema ist ausführlicher als der 
deutsche:
http://en.wikipedia.org/wiki/Numerical_differentiation

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.