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

Anpassen Achsskalierung ohne Änderung des Variablenwertes

 

lumpenseppal
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 23.09.11
Wohnort: ---
Version: 2010a
     Beitrag Verfasst am: 29.09.2011, 11:13     Titel: Anpassen Achsskalierung ohne Änderung des Variablenwertes
  Antworten mit Zitat      
Hallo zusammen,

Ich bin gerade dabei die Residuen einer Interpolierten Fläche bezogen auf die vorhandenen Messpunkte darzustellen, muss dazu aber die Skalierung ändern.

Die X,Y, und Z-Werte sind als mm eingelesen, um den Residuenplot anschaulicher zu gestalten, hätte ich in der Achse gerne mumeter dargestellt.

Da die Werte aber in keiner Variablen vorliegen sondern in einem fitresult-objekt gespeichert werden, weiß ich nicht wie ich ihm die Umrechnung klar machen soll.

Vielen Dank schon einmal im voraus,
Markus

Hier noch der bisherige Code des Plots:
Code:

%% Initialization.

% Convert all inputs to column vectors.
sftoolx = sftoolx(:);
sftooly = sftooly(:);
sftoolz = sftoolz(:);

%% Fit: 'cubicinterp'.
ft = 'cubicinterp';
opts = fitoptions( ft );
opts.Weights = zeros(1,0);
[fitresult, gof] = fit( [sftoolx, sftooly], sftoolz, ft, opts );

% Create a figure for the plots.
figure( 'Name', 'cubicinterp' );

% Plot fit with data.
subplot( 2, 1, 1 );
h = plot( fitresult, [sftoolx, sftooly], sftoolz );
legend( h, 'cubicinterp', 'sftoolz vs. sftoolx, sftooly', 'Location', 'NorthEast' );
% Label axes
xlabel( 'sftoolx [mm]' );
ylabel( 'sftooly [mm]' );
zlabel( 'sftoolz [mm]' );
xlim([-10 25]);
ylim([10 30]);
zlim([55 90]);
grid on

% Plot residuals.
subplot( 2, 1, 2 );
h = plot( fitresult, [sftoolx, sftooly], sftoolz, 'Style', 'Residual' );
legend( h, 'cubicinterp - residuals', 'Location', 'NorthEast' );
% Label axes
xlabel( 'sftoolx [mm]' );
ylabel( 'sftooly [mm]' );
zlabel( 'sftoolz' );
xlim([-10 25]);
ylim([10 30]);
grid on

 


resid_plot.jpg
 Beschreibung:
JPG des Plots

Download
 Dateiname:  resid_plot.jpg
 Dateigröße:  62.5 KB
 Heruntergeladen:  664 mal
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: 29.09.2011, 15:24     Titel: Re: Anpassen Achsskalierung ohne Änderung des Variablenwert
  Antworten mit Zitat      
Hallo lumpenseppal,

Ich verfüge nicht über die entsprchende Toolbox, aber ich rate mal, dass Matlab sich dabei an seine Standard-Methoden hält.

Kannst Du die Werte in "fitresult" ändern? Ist das ein Struct oder ein Objekt? Bei ersterem schaue Dir das mal im Variablen-Browser an, bei letzterem gibt es vielleicht eine passende Methode:
Code:


Eine andere Methode wäre es, auf die ZDaten des Grafik-Objekts zuzugreifen:
Code:
h = plot( fitresult, [sftoolx, sftooly], sftoolz, 'Style', 'Residual' );
ZData = get(h, 'ZData');
set(h, 'ZData', ZData * 1e6);

Ob das genau so funktioniert, weiß ich nicht, da ich nicht den genauen Typ der von PLOT erzeugten Grafik kenne. Aber vielleicht bekommst Du mit etwas herumprobieren die richtige Method hin.

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 23.09.11
Wohnort: ---
Version: 2010a
     Beitrag Verfasst am: 30.09.2011, 10:32     Titel:
  Antworten mit Zitat      
Wenn ich das richtig sehe erzeugt fitresult ein Objekt vom Typ sfit, bei Doppelklick im Variableneditor wird aber nichts angezeigt. Direkt darauf zugreifen ist scheinbar nicht möglich.

Dank dem Hilfetext weiß ich jetzt, dass ich mir davon zwar alles mögliche ausgeben lassen kann (Anzahl Koeff, Wert Koeff etc.), aber eben keinen direkten Zugriff auf den Wert habe. Es gibt allerdings die Möglichkeit die Residuen gesondert auszugeben und in einer neuen Variable zu speichern.

Für meinen Zweck reicht mir allerdings erstmal dein zweiter Vorschlag, das ändern nur im Plot, funktioniert tadellos Smile

Vielen Dank dafür!
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: 30.09.2011, 11:12     Titel:
  Antworten mit Zitat      
Hallo lumpenseppal,

Dann ist "sfit" ein Objekt. "methods(sfit)" sollte eine Liste von zur Verfügung stehenden Methoden liefern. Es kann aber gut sein, dass die berechneten Daten gekapselt sind, also nicht änderbar.

Aber wenn mein geratener Trick zur Änderung der ZData funktioniert hat, kann ich TMW ein weiteres Mal dazu beglückwünschen, dass die Funktionalität von Matlab in sich schlüssig ist. Schön!

Gruß, Jan
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.