|
|
1. Ableitung von Daten ohne Verwendung einer Fitfunktion |
|
Salamander |
Forum-Anfänger
|
|
Beiträge: 38
|
|
|
|
Anmeldedatum: 28.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.08.2009, 11:13
Titel: 1. Ableitung von Daten ohne Verwendung einer Fitfunktion
|
|
Hallo,
Ich habe zwei Datensätze mu und E und möchte die 1. Ableitung d{mu}/dE berechnen. Das würde ich gerne mit der zentrierten Formel (oder gibt es noch eine genauere Methode für's Ableiten?) machen, aber ohne nochmals eine Fitfunktion für die beiden Datensätze zu finden (das macht ja wieder unnötig Anpassungsfehler), was ja eigentlich bei diesem Verfahren möglich sein sollte. Wenn ich also das hier eingebe:
bekomme ich folgende Fehlermeldung:
Zitat: |
??? Undefined function or method 'differentiate' for input arguments of type 'double'. |
Weiß also jemand wie ich das ohne eine weitere Fitfunktion machen könnte?
Viele Grüße,
Salamander
|
|
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 03.08.2009, 11:22
Titel:
|
|
DIFFERENTIATE ist ein Befehl nur zu Anwendung auf Curve Fitting Objekte. Eine normale Ableitung auf Daten gibt es durch DIFF, aber das ist vermutlich hier nur eingeschränkt geeignet. Auf den MathWorks Seiten finde cih mit den Suchbegriffen "numerical differentiate" einiges an Tipps und auch FileExchange Material.
Andreas
|
|
|
Salamander |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 38
|
|
|
|
Anmeldedatum: 28.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.08.2009, 14:31
Titel:
|
|
Danke für die schnelle Antwort!
Da habe ich schon nachgeschaut, aber alle Funktionen brauchen entweder einen Fit oder eine Funktion, wie z.B. das bei deriv und derivest der Fall ist...Oder auf welche Funktionen bist du da gestoßen?
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 03.08.2009, 14:48
Titel:
|
|
Hmm, die Schwierigkeit scheint ja zu sein wenn die Messwerte nich äquidistant sind. Geht denn da nicht ein Differenzenquotient? (x(t2)-x(t1))/(t2-t1)
|
|
|
Salamander |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 38
|
|
|
|
Anmeldedatum: 28.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.08.2009, 14:51
Titel:
|
|
Nee, leider nicht, das ist grad das Problem...
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 03.08.2009, 15:05
Titel:
|
|
Was ist denn dann die "zentrierte Formel"? Dazu konnte ich nicht sinnvolles ergooglen.
|
|
|
Salamander |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 38
|
|
|
|
Anmeldedatum: 28.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.08.2009, 15:13
Titel:
|
|
Das ist der Differenzenquotient, den differentiate benutzt, aber dafür braucht man auch das gleiche h für alle Intervalle, was bei mir nicht der Fall ist...zentriert bedeutet nur, dass es nicht die Randpunkte wie beim Differenzenquotienten benutzt, sondern die Mitte zwischen 2 Punkten, was genauer ist....der Unterschied ist dann nur ein genauerer Differenzenquotient
|
|
|
Salamander |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 38
|
|
|
|
Anmeldedatum: 28.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.08.2009, 17:12
Titel:
|
|
Ein Problem ist gelöst: Habe ein Programm gefunden, das mir die Daten mit gleichen Intervallen ausspuckt, d.h. die Abstände zwischen den E's sind jetzt konstant. Also meinst du, dass ich einfach den Differenzenquotienten in Matlab eingeben kann und dass dann so ok ist?
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 04.08.2009, 08:01
Titel:
|
|
Ja, letztendlich scheint alles darauf hinauszulaufen äquidistante Daten zu bekommen. Wenn man fittet wird die gesamte Datenlage berücksichtigt. Die verschiedenen Differenzenquotienten sind einfacher (stückweise Interpolation), aber dafür schneller.
Andreas
|
|
|
Salamander |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 38
|
|
|
|
Anmeldedatum: 28.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.08.2009, 10:57
Titel:
|
|
|
|
|
Anbei im Anhang der Differenzenquotient, den ich benutzen möchte (ist der gleiche den auch die Funktion differentiate benutzt). Mein h=1, in meiner Datenmatrix coeffAl sind 6000x2 Werte, wobei die erste Spalte die x-Werte und die 2. Spalte die f(x)-Werte sind. Wenn ich nun die Differenzenquotienten von Hand berechne, bekomme ich folgendes raus:
2*f'(0)=f(1)-f(-1) geht nicht, Eintrag nicht vorhanden
2*f'(1)=f(2)-f(0)=coeffAl(2,2)-coeffAl(0,2)
2*f'(2)=f(3)-f(1)=coeffAl(3,2)-coeffAl(1,2)
2*f'(3)=f(4)-f(2)=coeffAl(4,2)-coeffAl(2,2)
2*f'(4)=f(5)-f(3)=coeffAl(5,3)-coeffAl(3,2)
.
.
.
2*f'(5999)=f(6000)-f(5998)
2*f'(6000)=f(6001)-f(5999) geht nicht, Eintrag nicht vorhanden
Nun habe ich das so in Matlab gemacht:
Matlab gibt mir aber nur einen Wert d1 am Ende heraus, wie kann ich es machen, dass jedes Mal d1 berechnet wird, so dass ich einen Vektor der Länge 5999 bekomme? Und kann ich irgendwie die beiden fehlenden Ableitungen berechnen, und wenn nicht, wie kann ich den Vektor dann gleich lang wie coeffAl machen?
Viele Grüße, Salamander
Beschreibung: |
|
Download |
Dateiname: |
zentrierte Formel.jpg |
Dateigröße: |
11.17 KB |
Heruntergeladen: |
1795 mal |
|
|
|
Salamander |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 38
|
|
|
|
Anmeldedatum: 28.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.08.2009, 12:07
Titel:
|
|
Also ich habe das jetzt mit diff gemacht, wäre aber nett, wenn mir jemand noch schreiben könnte, was an meinem Code falsch ist..Viele Grüße, Salamander
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|