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

Plot im falschen Fenster (handles.axes?)

 

90Bine
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 19.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2015, 10:56     Titel: Plot im falschen Fenster (handles.axes?)
  Antworten mit Zitat      
Hallo,

ich habe ein Problem den Plot in den richtigen Fenster anzuzeigen. In meiner GUI habe ich zwei achsen (axes1 und axes2). axes2 habe ich mit "axes(handles.axes2)" belegen können. In axes1 würd ich nun gerne meine Grafik anzeigen lassen. Der plot erscheint aber trotzdem immer im anderen Fenster (axes2), dass eigentlich schon belegt ist. Kann mir jemand weiterhelfen?

Code:

% --- Executes on slider movement.
function slider1_Callback(hObject, eventdata, handles)
% hObject    handle to slider1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider

Slider1Wert = get(handles.slider1, 'Value');
Slider1Wert = Slider1Wert * 9;
set(handles.text13, 'String', num2str(Slider1Wert));

axes(handles.axes1);

pde_funktion (Slider1Wert, a,c,...)

end

 


Die Funktion "pde_funktion()" gibt mir folgendes aus:

Code:


h = pdeplot(p,e,t,'xydata',u,'zdata',u,'colormap','jet','mesh','on','flowdata',ugrad);

 


Und dieser plot will einfach nicht in die richtige Anzeige rein -.-
Private Nachricht senden Benutzer-Profile anzeigen


Matlab_Fürst
Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 19.11.14
Wohnort: Brandenburg
Version: Matlab 2009
     Beitrag Verfasst am: 04.08.2015, 13:27     Titel:
  Antworten mit Zitat      
Hallo Bine,

bin zwar kein Profi aber ich werde es mal probieren.
Es sieht so aus als wenn du eine genaue Zuweisung der plots bräuchtest.
Vorrausgesetzt du hast die axes vorher definiert.
Hier mal ein kleines Beispiel mit Definition der axes und die Zuweisung der plots zum gewünschten axes.

Code:

function gui_doppel_plot
f=figure;

handles.axes1=axes('parent',f,'Position',[.15 .15 .3 .3]);  %Definition
handles.axes2=axes('parent',f,'Position',[.5 .15 .3 .3]);   %Definition

a=1:50;
b=sin(a);

plot(handles.axes1,a,b,'color','b');    %Zuweisung
plot(handles.axes2,a,sin(b),'color','r');    %Zuweisung

title(handles.axes1,'1. Plot');
title(handles.axes2,'2. Plot');
 



Ich setze jetzt mal vorraus das man pdeplot´s genauso zuweist wie normale plot´s.

Viel Erfolg.
_________________

Wer schwindelt der lügt.
Private Nachricht senden Benutzer-Profile anzeigen
 
Matlab_Fürst
Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 19.11.14
Wohnort: Brandenburg
Version: Matlab 2009
     Beitrag Verfasst am: 04.08.2015, 13:50     Titel:
  Antworten mit Zitat      
Aber ich arbeite gerne mit uitabgroups. Da kann man beliebig viele axes darstellen und muss auch nicht auf Größe verzichten.
Probier mal diesen Code aus. Etwas gewöhnungsbedürftig aber ganz nützlich.

Code:


function gui_doppel_plot_uitab
f=figure;
tabui=uitabgroup('v0','parent',f); % uitabgroup erzeugen
a=1:50;
b=sin(a);

t=[];
at=[];

t(1) = uitab('v0',tabui, 'title', '1. Plot');   % einzelnes uitab in der uitabgroup erzeugen
at(1) = axes('parent', t(1),'Position',[.1 .1 .8 .8]);  % axes im uitab erzeugen

plot(at(1),a,b,'Color','b'); %plotten mit Zuweisung des plots

t(2)=uitab('v0',tabui, 'title', '2. Plot'); % nächstes uitab in der uitabgroup erzeugen
at(2) = axes('parent', t(2),'Position',[.1 .1 .8 .8]);  % axes im uitab erzeugen

plot(at(2),a,sin(b),'Color','r');  %plotten mit Zuweisung des plots
 

_________________

Wer schwindelt der lügt.
Private Nachricht senden Benutzer-Profile anzeigen
 
90Bine
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 19.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2015, 15:10     Titel: 90Bine
  Antworten mit Zitat      
Hallo Matlab_Fürst,

deine erster Tipp funktioniert leider nicht, den hab ich auch schon ausprobiert. Soweit ich das unter der Hilfe verstanden habe gibt es "höhere" plot Befehle bei denen diese Art der Zuweisung nicht mehr funktioniert.
Deinen zweiten muss ich mir erstmal anschauen und durchgehen. Mit uitapgroups kenn ich mich leider überhaupt nicht aus. Ich guck mal, vielleicht krieg ich es damit hin Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
90Bine
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 19.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2015, 15:14     Titel: 90Bine
  Antworten mit Zitat      
Hey,

und ich habe gerade wegen uitabgroup geschaut. Leider gibt es das bei meiner Version noch nicht. Ich habe nämlich die 2013a Version -.-
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 04.08.2015, 15:20     Titel:
  Antworten mit Zitat      
eine idee wäre auch sich mal die pdeplot.m anzugucken. vieleicht kann man die ja so zurechtbiegen das man ein axeshandle übergeben kann.
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
90Bine
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 19.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2015, 15:34     Titel: 90Bine
  Antworten mit Zitat      
Hallo,

super Idee. Ich konnte mit pdeplot() den gleichen plot realisieren und diesmal hat Matlab mir den "axes(handles.axes1);" davor angenommen. Vielen Dank Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 04.08.2015, 15:39     Titel:
  Antworten mit Zitat      
huhu im interesse anderer leser wäre es hilfreich wenn du noch kurz genau schreibst was du geändert hast bzw was du gemacht hast.
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
90Bine
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 19.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2015, 10:16     Titel: 90Bine
  Antworten mit Zitat      
Hallo,

ja natürlich. Anstatt pdegplot(..) aufzurufen habe ich in meiner callback Funktion nun pdeplot(..) aufgerufen und den axes handle einfach davor geschrieben.


Code:


function slider1_Callback(hObject, eventdata, handles)
% hObject    handle to slider1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider

% Randwert 1
Slider1Wert = get(handles.slider1, 'Value');
Slider1Wert = round(Slider1Wert * 9);
set(handles.text13, 'String', num2str(Slider1Wert));

axes(handles.axes1);

h = pdeplot(p,e,t,'xydata',u,'zdata',u,...
    'colormap','jet','mesh','on','flowdata',ugrad);

 
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.