Ableitung von gesampleten Werten

Gast #1852742
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
#1852758
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...
Gast #1852759
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.
Gast #1852761
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.
Gast #1852768
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.
Gast #1852771
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.
Gast #1852796
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.
Gast #1852825
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?
Gast #1852834
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
Gast #1852847
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.
#1853059
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren