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

gof - Goodness of fit ploten

 

JoernS
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 20.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.07.2015, 10:31     Titel: gof - Goodness of fit ploten
  Antworten mit Zitat      
Hallo,

ich habe mit dem Curve-Fitting-Tool eine Optimierung durchgeführt und mir anschließend den Code generieren lassen.
Nun möchte ich mir die Werte des "goodness of fit" (gof) noch mit im plot und evtl. im command window anzeigen lassen.
Wenn ich den Code ausführe wird auch keine Variable namens gof oder etwas ähnliches erzeugt.

Code:
%% Fit: 'untitled fit 1'.
[xData, yData, zData] = prepareSurfaceData( d_mess, I_mess, U_mess );

% Set up fittype and options.
ft = fittype( '((a+b*x))*y^c', 'independent', {'x', 'y'}, 'dependent', 'z' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.Display = 'Off';
opts.StartPoint = [0.678735154857773 0.757740130578333 0.743132468124916];

% Fit model to data.
[fitresult, gof] = fit( [xData, yData], zData, ft, opts );

% Create a figure for the plots.
figure( 'Name', 'untitled fit 1' );

% Plot fit with data.
subplot( 2, 1, 1 );
h = plot( fitresult, [xData, yData], zData );
legend( h, 'untitled fit 1', 'U_mess vs. d_mess, I_mess', 'Location', 'NorthEast' );

% Plot residuals.
subplot( 2, 1, 2 );
h = plot( fitresult, [xData, yData], zData, 'Style', 'Residual' );
legend( h, 'untitled fit 1 - residuals', 'Location', 'NorthEast' );
 


Kann mir jemand helfen wie ich die gof-Werte in den Plot bekomme und evtl. im command window?

Danke,
Gruß Jörn
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.07.2015, 16:40     Titel:
  Antworten mit Zitat      
Hallo,

du holst doch vom fit-Befehl das zweite Rückgabeargument zurück. Es würde mich sehr wundern, wenn dann im Workspace keine Variable gof verfügbar wäre. Natürlich gehe ich davon aus, dass der Code fehlerfrei durchläuft...

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
JoernS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 20.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2015, 08:42     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich hatte mich auch gefragt warum ich keine Variablen finde. Dein Anstoß hat dazu geführt das ich schließlich doch den Grund gefunden habe!
Danke dafür!
Ich habe den genannten Code welcher in einer Funktion steht durch folgenden Funktionsaufruf aufgerufen:

Code:
Funktionsname (Inputparameter);


Das es am Funktionsaufruf scheitert hätte ich bei der Fehlersuche nicht erwartet, denn das sollte so langsam eigentlich sitzen... Shocked
Nach Abänderung auf

Code:
[fitresult, gof]Funktionsname (Inputparameter);


funtioniet das Ganze auch.
Wie ich das ganze dann im Plot einfüge habe ich mittlerweile auch rausgefunden.
Code:

text(20,3000,500,sprintf('Rsq = %g\nAdj = %g\nRSME = %g',gof.rsquare,gof.adjrsquare, gof.rmse))


Nur wenn ich das ganze mit Hilfe der eingebenen Achsenabschnitte
Zitat:
...text(20,3000,500, ...
platziere ist es teilweise nicht mehr im plot zu sehen, da es zu weit außerhalb liegt. (Im Plot ist es mir schlichtweg zu unübersichtlich)
Wie kann ich es beispielsweise im Plot immer rechts oberhalb des Plots platzieren, sodass auch wenn ich den Plot drehe der gof weiterhin rechts oberhalb des plots stehen bleibt?

Danke und Gruß
Jörn
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.07.2015, 10:44     Titel:
  Antworten mit Zitat      
Hallo JoernS,

Bitte öffne einen neuen Thread für eine neue Frage. Danke!

Code:
text(20,3000,500,sprintf('Rsq = %g\nAdj = %g\nRSME = %g',gof.rsquare,gof.adjrsquare, gof.rmse))


Zitat:
Wie kann ich es beispielsweise im Plot immer rechts oberhalb des Plots platzieren, sodass auch wenn ich den Plot drehe der gof weiterhin rechts oberhalb des plots stehen bleibt?

"Im Plot oberhalb des Plots"? Das ist unklar.
Wenn Du den Text an eine 3D-Position in einem AXES-Objekt setzt, muss sie sich beim Drehen mitbewegen und beim Zoomen auch aus dem Bild verschwinden. Wenn Du möchtest, dass ein Text an einer bestimmten Stelle stehen bleibt, darf er also nicht im AXES-Objekt liegen, in dem auch die daten liegen. Wie wäre eine Annotation ? Oder ein uicontrol('Style', 'Text') ? Oder ein neues unsichtbares AXES-Objekt, dass an der gewünschten Stelle im FIGURE-Objekt eingesetzt wird?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
JoernS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 20.05.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2015, 11:43     Titel:
  Antworten mit Zitat      
Hallo Jan,

das mit dem neuen Thread habe ich bei einer anderen Frage von mir bereits so umgesetzt, was ich auch in Zukunft allgemein beachten werde.
Da dieses Thema "fast" beendet ist, dank deiner Hilfe werde ich hierfür keinen neuen Thread mehr öffnen. Oder sollte ich doch?

Der Befehl Annotation ist genau der den ich gesucht hatte. Aktuell sieht es so aus:
Code:
str = {'Rsq = ', 'Adj = ','RSME = '}
annotation('textbox',[0, 0.5, 0.1, 0.1],'string',str)

Nur hätte ich dazu noch eine Frage:
Wie bekomme ich hinter beispielsweise
Zitat:
Rsq =
den Wert aus dem struct-array Namens
Zitat:
gof.rsquare
?

Gruß Jörn
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.07.2015, 12:49     Titel:
  Antworten mit Zitat      
Hallo,

du kannst entweder num2str verwenden oder, wie du es bereits getan hast, sprintf , um den String zusammenzusetzen.

Grüße,
Harald
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 - 2025 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.