Softwareentwickler MATLAB/Simulink (w/m) Erarbeitung von Lösungen im Bereich der Schnittstelle zum Simulink-Modell und der Benutzeroberfläche von TargetLinkdSPACE GmbH - Paderborn
Ich habe eine GUIDE (Gui_Glaze_4_Variablen) mit Hintergrundbild (vulkan_Bild). Dieses GUIDE ruft ein Programm (glaze) auf. In dem wird eine Berechnung durchgeführt und das Ergebnis dann im GUIDE geplottet. Wenn ich das GUIDE das erste Mal aufrufe, erscheint das Hintergrundbild. Wenn ich aber dann auf den Startknopf des GUIDES drücke, welches den Befehl zur Berechnung des externen Programms gibt erfolgt die Berechnung und mein Plot-Bild im GUIDE. Der Plot soll auch im GUIDE erscheinen, aber das Hintergrundbild soll im Hintergrund immer noch zu sehen sein. In dem Moment ist das Hintergrundbild im GUIDE verschwunden. Zudem erscheint mein Plot-Bild kopfüber. Ich finde leider nichts in diesem oder auch im englischen Forum. Wenn jemand auch nur eine leise Idee hat, bin ich schon sehr dankbar...
Hier schreibe ich den Code für meine Hintergrundbild. Wenn ich das auskommentiere, ist das Hintergrundbild weg, aber mein Plot nicht mehr Kopfüber, sondern normal.
Code:
function GUI_Glaze_4_Variablen_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to GUI_Glaze_4_Variablen (see VARARGIN)
% Choose default command line output for GUI_Glaze_4_Variablen
handles.output = hObject;
Harald, entschuldige vielmals wegen dem nicht-funktionierenden Gui. Ich hatte aus Versehen in der Opening-Function das global machen durch guidata(hObject, handles) auskommentiert und so so abgespeichert. Mein Beispiel läuft wieder fehlerfrei. Mein Bild wird jetzt auch korrekt geplottet durch das Einfügen
nach dem Plot. Mein Hintergrundbild verschwindet aber weiterhin. Ich hoffe, es ist ok, wenn ich mein aktuelles Programm dann nochmal sende, anstatt ein Minimalbeispiel? Der Plot im Glazeprogramm geht in Zeile 247 los.
Ich habe einen Teil des Plotbefehls hier gepostet. Es gibt zu Beginn den Plot-Befehl, der mir den Radius gegen die Höhe plottet. Diese beiden Varialben sind zuvor vom glaze-Programm berechnet worden.
Des weiteren "baue" ich noch was in das Bild via patch-Befehl ein. Doch auch wenn ich das weglasse, verschwindet das Hintergrundbild. Lasse ich axis ([-40000 35000 -5000 40000]) weg, gibts einen verzerrten plot, aber das hintergrundbild verschwindet trotzdem.
Es kann also nur an der Kombination mit dem Plot-Befehl liegen. Ich hoffe, das ist dir klar genug, wie ich das meine? Sonst versuche ich ein anderes Beispiel zu konstruieren?
Die korrekten Files sind unten nochmal angehangen.
z_vec = (hstep:hstep:z)'; % um alle Werte von 0 bis Ende für die Höhe in einem Vektor zu erhalten.
plot(r_vec,z_vec,'r-') plot(-r_vec,z_vec,'r-')% negative Werte auch plotten, um ein achsensymmetrisches Bild zu erhalten - einen kegel
z2 =[z_vec; z_vec(end:-1:1)];
r2= [r_vec;-r_vec(end:-1:1)];
holdall axis([-4000035000-500040000]);
xlabel('Breite (km)') ylabel('Höhe über Kraterradius (km)')
die Fehlermeldung beim Öffnen der GUI ist weg, die beim Ausführen des Callbacks besteht weiter. Du versuchst Parameter zu übergeben, obwohl glaze.m keine entgegennimmt.
hier kommt ein anderes, kleineres Beispiel, wo ich jetzt zur Veranschaulichung nur einen Slider, Edit-Tool und Pushbutton eingefügt habe.
Wenn ich die Gui aufrufe erhalte ich mein Backgroundbild, sobald ich jedoch den Pushbutton betätige, der dann einen Wert an meine Funktion ellipse2 übergibt und dieses Programm dann plottet ist mein Hintergrundbild verschwunden?
Wie kann ich es nur schaffen, dass mein Hintergrundbild bleibt und sich der Plot nur darüber legt. Also nur die Ellipse, nichts anders?
stop, ich habe grade noch einen fehler entdeckt. ich hatte was richtig laufendes, habe es irgendwie gelöscht und die falsche version hochgeladen. ich bin schon so übermüdet, dass ich es grad nicht so hinbekomme. sobald alles fix ist und ich mir sicher bin ist lade ich nochmal hoch.
ok, jetzt passt das beispiel. irgendwie hatte ich die creatfcn der achse zuvor versaut gehabt. ich habs nicht gebacken bekommen das zu reparieren und musste das nochmal neu machen.
backgroundImage = importdata('vulkan_Bild.jpg');
%select the axes axes(handles.Image);
%place image onto the axes image(backgroundImage);
%remove the axis tick marks
%axis off
% % Choose default command line output for GUI_Glaze_4_Variablen
handles.output = hObject;
% % % Update handles structure
in die Opening Function des Gui.
Gleichzeitig muss dieses Hintergrundbild vor dem Plotbefehl in das Programm aufgenommen werden. Dabei muss angegeben werden, wo das Bild hin muss via Achsenbefehl. In diesem Fall muessen die Achsen mit den Werten des ganzen Bildes angegeben werden.
Code:
backgroundImage = importdata('vulkan_Bild.jpg');
%place image onto the axes image([-3535],[35-15],backgroundImage);
hold on
Options and Permissions
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
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.