WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Approximation durch eine vorgebene Funktion->Parameter?

 

Gast123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.05.2009, 13:29     Titel: Approximation durch eine vorgebene Funktion->Parameter?
  Antworten mit Zitat      
Hallo,
Ich würde gerne eine Approximation von gegebenen Daten durch eine Funktion durchführen. Diese Funktion ist aber nicht polynomisch und keine Linearkombination aus Grundfunktionen. Matlab soll mir die fehlenden Parameter für eine optimale Approximation (z.B. durch Least Square) berechnen.
Hier ein Beispiel:

Code:


%Daten
x1=[0 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ];
y1=[0 0 8 65 125 205 305 437 565 685 780 842 847 848 849 849 849 849 849];

%Testwerte:
a=850;     %Diese sollen von Matlab (optimal) bestimmt werden
b=-10/18;
c=8;

x=0:0.1:20;
%Approximationsansatz:

y=a*exp(-exp(b*(x-c))); %gesucht a,b,c für die "beste" Kurve

plot(x,y,x1,y1,'r')


Lucia
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 55
Anmeldedatum: 19.03.09
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 13.05.2009, 13:48     Titel:
  Antworten mit Zitat      
Es gibt hierfür
Code:
aus der Optimization Toolbox (falls du die hast?)
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.05.2009, 13:55     Titel:
  Antworten mit Zitat      
Ja, die hab ich. könntest du mir das mal an den oben genannten Beispiel zeigen? oder geht das auch anders?
 
Lucia
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 55
Anmeldedatum: 19.03.09
Wohnort: ---
Version: R2008b
     Beitrag Verfasst am: 13.05.2009, 14:53     Titel:
  Antworten mit Zitat      
Ok, erst mal die Funktionsdefinition:
Code:
function F=myfun(abc,xdata)
F=abc(1)*exp(-exp(abc(2)*(xdata-abc(3))));
(als myfun.m speichern)
und dann
Code:
abc=lsqcurvefit(@myfun,[850, -10/18, 8],x1,y1);

wobei x1 und y1 die Daten sind (wie im ersten Post) und als Startwerte die Testwerte gewählt wurden. Das Resultat plotten:
Code:
x=0:0.1:20;
y=myfun(abc,x);
plot(x,y,x1,y1,'r')
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.05.2009, 16:31     Titel:
  Antworten mit Zitat      
Danke es funktioniert. Naja ich werd es auch nochmal versuchen selber zu programmieren....wenn jemand ne gut Idee hat, kann er ja "Bescheid" geben. Very Happy
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.