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

Curve Fitting TB: Bedingung für gefitteten Parameter setzen

 

MatLabNooB
Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.06.2009, 21:38     Titel: Curve Fitting TB: Bedingung für gefitteten Parameter setzen
  Antworten mit Zitat      
hallo,

mal ne kurze Frage, hab dazu auf den Mathworks-Seiten nix gefunden:

Ich hab einen Fit mit 3 Parametern (a,b,c), nun würd ich als bedingung gern haben, dass b>c sein soll?

Code:
% Fit of probability function P(r^2,t)
figure;
n=1;
hold all
for t=2:steps
    plot (eval.ensemble{3,1}(:,1),eval.ensemble{3,1}(:,t), 'o')
   
    s = fitoptions('Method', 'NonlinearLeastSquares',...
               'MaxFunEvals', 1800,...
               'Maxiter', 1000,...
               'Lower',[0,0,0],...
               'Upper', [1,Inf,Inf],...
               'TolFun', 10^(-20),...
               'TolX', 10^(-20));

    f = fittype('1-(a*exp(-x/b^2)+(1-a)*exp(-x/c^2))',...
            'options', s,...
            'independent', 'x');

    c = cfit(f,.5,.3,.1);

    [fun_fit,gof] = fit (eval.ensemble{3,1}(:,1),eval.ensemble{3,1}(:,t),f);
   
    plot(fun_fit)
end
hold off


gruss und schonmal herzlichen dank

Verschoben von Bijick: Diese Fragestellung kann nur von Nutzern mit dieser Toolbox sinnvoll bearbeitet werden. Bitte in Zukunft selbst dran denken! Danke Smile
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 04.06.2009, 09:07 Uhr von Bijick
Von Programmierung nach Toolboxen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 04.06.2009, 09:24     Titel:
  Antworten mit Zitat      
Moin,

die einzige Möglichkeit die mir einfallen würde, wäre die Bedingung über die Fit-Optionen UPPER und LOWER zu implementieren:
Code:
% wenn b>c sein soll dann ist c die untere Grenze für b und b die obere für c
s = fitoptions('Method', 'NonlinearLeastSquares',...
               'MaxFunEvals', 1800,...
               'Maxiter', 1000,...
               'Lower',[0,c,0],...
               'Upper', [1,Inf,b],...
               'TolFun', 10^(-20),...
               'TolX', 10^(-20));

Ich bin mir aber nicht sicher, ob Matlab das so akzeptiert.

Aber wenn deine Daten so aussehen, dass b>c sein muss, dann sollte doch der Fit so und so die Bedingung erfüllen, oder?!

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
MatLabNooB
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2009, 09:52     Titel:
  Antworten mit Zitat      
nee, akzeptiert er leider nicht, es geht eigentlich darum, dass ich dann aus den zeilen einen mean berechnen möchte, die Funktion ist so ausgelegt, dass b und c auch umgetauscht werden können, mhh, muss dann mal schaun, gibt es die möglichkeit einen switch zwischen zwei elementen zu machen für die bedingung b>c? also, dass dann eval.ensemble{3.1}(2,2) mit eval.ensemble{3.1}(2,3) getauscht wird?
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 04.06.2009, 10:06     Titel:
  Antworten mit Zitat      
Hallo,

Du könntest in der Berechnung

Code:
min(b,c)
% und
max(b,c)


verwenden. Übrigens sollte man vermeiden, Variablen wie interne Matlab-Funktionen (eval) zu benennen... Smile

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
MatLabNooB
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2009, 23:07     Titel:
  Antworten mit Zitat      
habs jetzt mit ner if-abfrage und dem befehl
Code:
hinbekommen, und danke für den tip wegen eval, werd das mal umbenennen
Private Nachricht senden Benutzer-Profile anzeigen
 
12345

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.08.2012, 13:55     Titel: hmm
  Antworten mit Zitat      
Hallo,

für mich wäre die Antwort auch interssant. Werde aus dem Matrix flippen nicht schlau. Welche Matrix hast du denn wann geflippt?

Gruß von einer ratlosen Physik-Studentin
 
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.