Verfasst am: 03.06.2013, 14:13
Titel: Plots in GUI erstellen
Moin,
ich habe die Aufgabe bekommen von einem vorhandenen und lauffähigen Programm eine GUI Oberfläche zu erstellen.
in dem Programm werden 2 Subplots in einem Figure erstellt.
Ich probieren jetzt schon seit längerem diese 2 Plots in meine Gui einzubauen. Nur leider gelingt es mir nicht, denn ich habe nur sehr wenig Ahnung von MatLab.
Das C# programmieren liegt mir irgendwie mehr.
Code:
subplot(2,1,1) plot(importdaten(1:200,1), importdaten(1:200,3));
title('Winkel') xlabel('Abtastzeit t [s]') ylabel('Auslenkung [V]') grid on;
subplot(2,1,2) plot(importdaten(1:200,1), importdaten(1:200,5));
title('Strom') xlabel('Abtastzeit t [s]') ylabel('Strom [A]') grid on;
clearvars i puffer s str;
Das ist der Code. Wie bekomme ich nun diese beiden Plots in meine GUI/Axes rein(axes1,axes2)?
Dieser Code wird in einer anderen .m-Datei ausgeführt.
Die GUI heißt autotune.m.
Ich wäre euch sehr dankbar, wenn ihr mir da ein wenig helfen könntet.
mein Problem ist jetzt allerdings noch, die erste Darstellung der Werte passt. Wenn ich in den selben 'axes' die Werte aktualisiere, bis zu 20 mal alle 3 sek., dann werden die 'axes' sehr groß.
Quasi ein Hintergrundbild der GUI.
Was kann man da tun???
Rek
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 03.06.2013, 18:27
Titel:
du meinst woll "axis" also die Skalierung der zugehörigen Achsensysteme?
in dem Fall mal in der Hilfe nach axis-Befehlen suchen -> so was wie axis tight...etc
sollte dir da helfen...
sorry das ich mich nicht mehr gemeldet habe. War leider eine Zeitlang verhindert und konnte nicht weiter machen.
Es hat sich aber dennoch etwas geändert.
Den anderen ganzen Code hier einzustellen ist ziemlich problematisch und würde auch nicht wirklich weiter helfen denk ich.
Was vllt noch helfen würde, ist:
Meine GUI greift auf eine .m Datei zu die sich import_1 nennt.
Dabei wird das erste mal eine Winkel und eine Stromkennlinie in die Graphen geschrieben. Hier erscheint auch eine Abfrage ob die Linien gut aussehen.
Code:
% Daten plotten
r = findobj('tag', 'Winkel');
set(gcf,'CurrentAxes',r);
plot(r, importdaten(1:200,1), importdaten(1:200,3));
title('Winkel') xlabel('Abtastzeit t [s]') ylabel('Auslenkung [V]') grid on;
s = findobj('tag', 'Strom');
set(gcf,'CurrentAxes',s);
plot(s, importdaten(1:200,1), importdaten(1:200,5));
title('Strom') xlabel('Abtastzeit t [s]') ylabel('Strom [A]') grid on;
clearvars i puffer s str;
Wenn die Abfrage mit OK bestätigt wurde, dann fängt eine Regelung an zu arbeiten und modifiziert diese Kurven.
Dies passiert allerdings aus einer 2. .m Datei (import_2)
und hier hackt es jetzt auch:
Code:
%% Daten plotten
plot(importdaten(1:200,1), importdaten(1:200,3));
title('Winkel') xlabel('Abtastzeit t [s]') ylabel('Auslenkung [V]') grid on;
plot(importdaten(1:200,1), importdaten(1:200,5));
title('Strom') xlabel('Abtastzeit t [s]') ylabel('Strom [A]') grid on;
clearvars i puffer s str;
Der Graph mit dem Winkel ändert sich garnicht nach dem allerersten Durchgang und der Graph mit dem Strom funktioniert problemlos.
Ich habe jetzt auch schon probiert in der import_2 den selben Code wie in der import_1 zu benutzen. Dann erhalte ich allerdings den Fehler, dass die Vectoren gleich lang sein müssen.
Darauf hin dachte ich mir ich lösch den Inhalt der Graphen, aber das funktionierte leider auch nicht.
Hat einer eine Idee wie ich jetzt die Kennlinien in der import_2 aktualisiere ohne wieder Probleme damit zu haben!?
Ich verstehe das Problem nicht.
So weit ich es sehe, läuft der gepostete Code, oder?
Bitte poste dann den Code, der nicht läuft und eine Kopie der vollständigen Fehlermeldung.
"dachte ich mir ich lösch den Inhalt der Graphen" und "funktioniert leider nicht" erlaubt es nicht, einen Verbesserungsvorschlag zu machen.
Bitte benutze den Debugger um herauszufinden, wo das Problem liegt. Du kannst einen Breakpoint in die entsprechende Zeile setzen und Dir den Inhalt von "t" anschauen: Entweder es wird kein oder mehrere Objekte mit dem Tag 'Winkel' gefunden. Wenn dann der Handle als erstes Input verwendet wird, kann Matlab es nicht von einem Daten-Vektor unterscheiden.
Es ist übrigens tückisch, all Grafik-Objekte nach einem bestimmten Tag zu durchsuchen. Erstens können das in einem komplexen GUI sehr viele Objekte sein, so dass die Suche lange dauert. Andererseits könnten auch mehrere GUIs gleichzeitig geöffnet sein, so dass die Suche nicht mehr eindeutig wird.
Besser wäre es also nur innerhalb der aktuellen Figure zu suchen oder noch besser sich den Handle gleich lokal zu speichern (guidata, set(figureH, 'UserData'), etc).
Das funktioniert anstandslos und macht mich ein wenig Glücklich nach dem ewigen rumprobiere.
Ich kann zwar nicht beurteilen ob das eine elegante Lösung ist, daber es funktioniert.
Vielen Dank nochmal!
Einstellungen und Berechtigungen
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.