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

Mehrere Plots in einer Axes anzeigen und einen verändern

 

Matze E.
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 06.08.09
Wohnort: ---
Version: R2009a
     Beitrag Verfasst am: 20.09.2009, 15:53     Titel: Mehrere Plots in einer Axes anzeigen und einen verändern
  Antworten mit Zitat      
Hallo an alle,

ich habe mal wieder ein Problem. Ich hoffe, ich bin hier richtig, denn ich glaube, der Fehler liegt daran, dass ich das, was ich vorhabe, in einer GUI machen möchte.

Rahmen:
Ich habe eine GUI gebastelt, die Video- und Signaldaten aufzeichnet. Mit Scrollbalken kann man sowohl durch das Signal, wie auch durch die Bilder scrollen. Insgesamt habe ich vier Achsen auf denen jeweils ein Signal ausgegeben wird. Das kann gespeichert, geladen und im Workspace zur Verfügung gestellt werden. Das funktioniert soweit alles reibungslos.
Nun möchte ich die Scrollbars gerne austauschen, da diese unter der Achse verlaufen und ziemlich dick sind. Somit ist bei den Signalen nicht genau erkennbar, wann ein Maximum mit dem Scrollbar erreicht ist. Stattdessen möchte ich nun gerne in jeder Achse eine Paralle zur Y-Achse plotten lassen, die mit einer Scrollbar daneben gesteuert wird. Also der Plot des Signals muss erhalten bleiben und die Parallele will ich beliebig bewegen können.
Zu Beginn der GUI gebe ich diese Parallelen einmal aus. Der Code dazu sieht wie folgt aus:
Code:
global line_signal1;
global line_signal2;
global line_signal3;
global line_signal4;

x=[-5:0.2:5];
x(:) = 0.65;
y = [-5:0.2:5];

% hold
line_signal1 = line(x,y);
line_signal2 = line(x,y);
line_signal3 = line(x,y);
line_signal4 = line(x,y);
set(line_signal1,'LineWidth',0.3);
set(line_signal2,'LineWidth',0.3);
set(line_signal3,'LineWidth',0.3);
set(line_signal4,'LineWidth',0.3);
set(line_signal1,'Parent',handles.axes_signal1);
set(line_signal2,'Parent',handles.axes_signal2);
set(line_signal3,'Parent',handles.axes_signal3);
set(line_signal4,'Parent',handles.axes_signal4);


Bis zu dem Zeitpunkt dass neue Daten aufgenommen oder alte geladen wurden, sind alle anderen Funktionen disabled. Beim Laden werden die Daten wie gesagt wieder in die GUI aufgenommen und die Sognale werden in die Achsen geplottet. Der Code dazu:
Code:
load(a, 'variable_save')
% Aufspalten der Variable in Signale und Bilder
matar = cell(1,length(variable_save)-1);
for k = 1:(length(variable_save)-1)
        matar{k} = variable_save{k};
end;
data = variable_save{length(variable_save)};
% Übergeben der Signaldaten und der Bilddaten an den Workspace
assignin('base','signal_data',data);
assignin('base','picture_array',matar);
   
% ----------- Signalausgabe auf den einzelnen Achsen -----------------
% Anpeilen der 1. Achse zur Signalausgabe
hold(handles.axes_signal1,'on')
plot(handles.axes_signal1, data(:,1),'c')
grid(handles.axes_signal1,'on')
% hold(handles.axes_signal1,'off')
 


Mit dem Befehl
Code:
get(handles.axes_signal1,'Children')
komme ich nun an die in der Achse gezeichneten Plots. Ich bekomme damit auch für beide ein handle. Leider wird nur das Signal angezeigt. Den x-Wert der Parallelen kann ich verändern, dass wird auch registriert, aber ich kann die Linie nicht ausgeben.

Wenn ich das hold hier rausnehme und am Anfang reinnehme, habe ich das Problem, dass die y-Parallele nicht mehr als Kind der Achse geführt wird. Was bedeutet, dass ich mit dem eben genannten Befehl dafür auch kein handle bekomme. Ohne dass handle kann ich die Linie natürlich steuern.


Kann mir hierbei vielleicht jemand helfen?
Matthias
_________________

Nicht der ist der Beste,
der der Beste von allen ist,
sondern der,
der sich selbst ueberwindet.
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.