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

Problem mit exponentiellem Fit!

 

unclefish
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 27.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2008, 16:15     Titel: Problem mit exponentiellem Fit!
  Antworten mit Zitat      
Wenn ich versuche einen Datensatz (exponentiell abfallende Kurve) mittels cftool anzufitten bekomme ich stets die Fehlermeldung:

Error using ==> fit
Too many output arguments.

Hat jemand eine Idee wo hier der Fehler liegt?

Ich benutze MATLAB Vers 7.0.4.365(R14).

Gruss,
Thomas
_________________

Gruss,
Thomas
Private Nachricht senden Benutzer-Profile anzeigen


nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 01.09.2008, 16:28     Titel:
  Antworten mit Zitat      
Hi,

wie rufst Du was auf?
Am besten postet Du ein lauffähiges Beispiel.

Vielleicht reicht auch
Code:
für Deine Anwendung?
Siehe hier
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
unclefish
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 27.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2008, 18:14     Titel:
  Antworten mit Zitat      
Vielen Dank für die Antwort!
Ich starte das Tool durch Eingabe von

"cftool"

Dann wähle ich einen Vektor der, z.B. Zeitpunkte (0,1,2,...,t) enthält, sowie einen Vektor mit korrespondierenden Messdaten.

Wenn beide Vektoren gewählt sind, klick ich "Create Data set".
Im sich öffnenden Fenster dann "New Fit" und "Type of Fit" auf "Exponential" setzen. Erste Fit-Option wählen [ a*exp(b*x) ] und "Apply" klicken.

Jetzt sollte das Tool den Fit berechnen, doch im Ergebnisfeld erhalte ich eine Fehlermeldung.

Beispieldaten (verkürzt):

x =

0
2
3
6
8
10
12
14
16
18
20
22
24
26
28
30


y =

1.00
0.94
0.72
0.60
0.52
0.45
0.39
0.35
0.32
0.29
0.26
0.25
0.23
0.22
0.20
0.19

Ich brauche den exponentielle Fit um Zeitkonstanten aus den Daten zu extrahieren. Im Prinzip kann ich das auch von Hand machen und eine kurze Routine schreiben. Ich wundere mich nur, warum dieses Tool nicht funktionieren will.

Gruss,
Thomas
_________________

Gruss,
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 01.09.2008, 18:29     Titel:
  Antworten mit Zitat      
Hi,

das kann ich nicht bestätigen:
Code:
clear all;
clc;

x=[0 2 3 6 8 10 12 14 16 18 20 22 24 26 28 30];
y=[1.00 0.94 0.72 0.60 0.52 0.45 0.39 0.35 0.32 0.29 0.26 0.25 0.23 0.22 0.20 0.19];

st = [1 0 ];
ft = fittype('exp1');
cf = fit(x(:),y(:),ft,'Startpoint',st);
plot(x,y,'bd');
hold on;
plot(cf);
hold off;
funktioniert bei mir.
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
unclefish
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 27.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.09.2008, 16:15     Titel:
  Antworten mit Zitat      
Hallo!

Ok, aber du hast jetzt nicht das graphische Tool verwendet.
Ich wollte halt nachvollziehen, warum ich dort eine Fehlermeldung bekomme.


Kurze Anmerkung:
Funktioniert der Eingabecode exakt so wie er in deinem Posting steht?
In meiner MATLAB-Version muss ich die Funktion (e.g. ft) als string übergeben, also:

cf = fit(x(:),y(:),'ft','Startpoint',st);

Diese Prozedur bringt aber kein gutes Ergebnis, sondern liefert nur eine horizontale Gerade (siehe showfit(cf)).

Gebe ich dagegen einfach nur folgende Zeile ein:
cf = fit(x(:),y(:),'exp',[1 1]);

Erhalte ich den korrekten Fit (showfit(cf)). Seltsam...
_________________

Gruss,
Thomas

Zuletzt bearbeitet von unclefish am 03.09.2008, 14:00, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 02.09.2008, 16:21     Titel:
  Antworten mit Zitat      
Hi,

ja, der Code funktioniert so bei mir.
Welche Version hast Du denn? (Die kann man im Profil eintragen)
cftool ruft auch nur diese Befehle in geeigneter Reihenfolge auf.
Könntest Du in Deinem letzten Posting die Code-Formatierung benutzen?
Dann verschwinden die Smileys.
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
unclefish
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 27.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.09.2008, 14:01     Titel:
  Antworten mit Zitat      
Ich benutze MATLAB Vers 7.0.4.365(R14).
_________________

Gruss,
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 03.09.2008, 15:39     Titel:
  Antworten mit Zitat      
Hi,

offenbar benutzt Du neben der Curve Fitting Toolbox von Mathworks noch EzyFit. Hättest Du ruhig sagen können Wink
Ich weiß nicht, ob es eine gute Idee ist, beides zu mischen.

Was Du als dritten Parameter an fit übergeben musst/kannst findest Du, wenn Du
Code:
cflibhelp exponential
ft = fittype('exp1');
cf = fit(x(:),y(:),ft,'Startpoint',st);
eingibst.
Die erste Zeile listet vorhandene exponentielle Modelle auf, davon suchst Du Dir ein passendes aus, machst davon ein fittype-Object (2. Zeile) und das übergibst Du an fit (3. Zeile)
In Ermangelung alter Dokus kann ich aber nicht sagen, bis zu welcher Version zurück das so funktioniert.
Bei R13 scheint man direkt den Modell-Namen als String zu übergeben:
http://www.mathworks.com/access/hel.....ox/curvefit/curvefit.html

Für das vorgehen mit ezyfit musst Du dir mal die dazugehörige Doku durchlesen.
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Michael
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 08.09.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.09.2008, 23:46     Titel: Re: Problem mit exponentiellem Fit!
  Antworten mit Zitat      
Hallo Thomas,

unclefish hat Folgendes geschrieben:
Wenn ich versuche einen Datensatz (exponentiell abfallende Kurve) mittels cftool anzufitten bekomme ich stets die Fehlermeldung ...


Ich kenne leider das Tool nicht, würde Dir aber zwei Alternativen vorschlagen:
a) Logarithmieren und linear anfitten.
b) lsqcurvefit ausprobieren (geht für beliebige Funktionsverläufe; du mußt vorher eine entsprechende Funktion definieren; bis es läuft, mußt Du aber die ein oder andere Gehirnwindung aufwenden)


Gruß,
Michael
Private Nachricht senden Benutzer-Profile anzeigen
 
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.