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

Werte und Text aus dynamischen Popup

 

LATMAB
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 31.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2013, 14:01     Titel: Werte und Text aus dynamischen Popup
  Antworten mit Zitat      
Hallo alle miteinander,

ich habe das Forum jetzt schon durchforstet, ebenso die Hilfe. Die Problematik wurde oftmals zahlreich erläutert, bei vielen gelöst. Aber ich hänge nun trotzdem seit zwei Tagen einem Problem. Kurze Erläuterung vorab. Ich bearbeite mit Hilfe eins mathematischen Algorithmus unterschiedliche Werte, die anschließend in einer GUI in einem axes dargestellt werden. Diese Werte, werden zuvor aus einer Excel Datei eingelesen und weiter verarbeitet. Da es Objekte 1. Ordnung und Objekte zweiter Ordnung gibt und das am Ende etwas unübersichtlich wird, hatte ich die Idee mit einem dynamischen Popup zu arbeiten, dass die Objekte 1. Ordnung immer dargestellt werden und die Objekte 2. Ordnung nach Auswahl durch das Popup hinzugefügt werden, je nach Bedarf. Das Einlesen in das dynamische Popup klappt einwandfrei.
Code:
%Pop Up Menü abbilden
popup=handles.popupeig;
set(popup,'Visible','on');
set(popup, 'String', txtE);
set(popup, 'Value',txtz-1);

Zunächst lass ich das Popup Menü darstellen und lese die Objektnamen ein, danach gebe ich den Wert bzw. Anzahl der Objekte an. Und danach möchte ich per Callbackfunktion je nach wahl des Objekts im Axes als Punkt darstellen, dazu werden aus einer Matrix die Koordinaten entnommen.

Code:
function popupeig_Callback(hObject, eventdata, handles)
% hObject    handle to popupeig (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 popup=handles.popupeig;
 YE=handles.YE;
 txtE=handles.txtE;
      val = get(popup,'Value');
      plot(YE(val,1),YE(val,2),'bo');
      text(YE(val,1)+0.1,YE(val,2),txtE(:,val), 'Color','b');


Ja von wegen... Smile Nun meine Frage - Gibt die Variable "val" wirklich die "Position 1-...." an, dass ich mit der Variable wirklich auf die einzelnen Werte der Matrix zugreifen kann ? Oder besser formuliert - dass es nicht heißt, wenn es nicht geht, kannst du die Frage selber beantworten- wie kann ich diesen Positionen die Werte im Popup Menü zuweisen? Smile

Besten Dank im Voraus.

txtz: Anzahl der Zeilen inkl. einer Leerzeile (Matrix)
YE: Matrix mit mehrdimensionalen Koordinaten
txtE: Objekte die eingelesen Werten
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 31.07.2013, 14:18     Titel:
  Antworten mit Zitat      
Hallo

kommt eine Fehlermeldung? Oder was klappt da nicht? was groß ist in txtE?

zu deiner Frage: Value liefert wirklich die Position der Ausgewählten Menupunkts in der Popup. Dabei werden Popup-Einträge von Oben nach Unten durchnummeriert. Warum es mit deiner Matrix nicht zusammenpasst, kann ich leider nicht beantworten.

Das kannst du ja auch überprüfen,
z.B so:
Code:
val = get(popup,'Value');
str  = get(popup,'String');

disp(str{val})




Ist denn überhaupt dieser Ausdruck richtig?
sollte das nicht so heißen:
Code:



text(YE(val,1)+0.1,YE(val,2),txtE{val,:}, 'Color','b');
 
Private Nachricht senden Benutzer-Profile anzeigen
 
LATMAB
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 31.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2013, 14:33     Titel:
  Antworten mit Zitat      
Hi,
danke dir schonmal.

denny hat Folgendes geschrieben:
Hallo

kommt eine Fehlermeldung? Oder was klappt da nicht? was groß ist in txtE?

zu deiner Frage: Value liefert wirklich die Position der Ausgewählten Menupunkts in der Popup. Dabei werden Popup-Einträge von Oben nach Unten durchnummeriert. Warum es mit deiner Matrix nicht zusammenpasst, kann ich leider nicht beantworten.

Das kannst du ja auch überprüfen,
z.B so:
Code:
val = get(popup,'Value');
str  = get(popup,'String');

disp(str{val})



Also das klappt einwandfrei. Es kam die ganze Zeit keine Fehlermeldung. Das Tool hat mir nix angezeigt, weshalb es nicht ging. Ich dachte, dass ich auf dem Holzweg bin mit dem Value. Aber da du es dankenderweise bestätigt hast war ich auf dem richtigen Weg. Aber jetzt habe ich ein anderes Problem an der Stelle erhalten, was zuvor nicht dargestellt wurde. Was allerdings nicht so wirklich in diesen Bereich passt.

Code:
??? Reference to non-existent field 'YE'.

Error in ==> tool>popupeig_Callback at 383
      YE=handles.YE;


Very Happy Alle anderen übergibt er nur genau die Werte der Matrix nicht. Naja dann werde ich mich da mal dran machen.

denny hat Folgendes geschrieben:


Ist denn überhaupt dieser Ausdruck richtig?
sollte das nicht so heißen:
Code:



text(YE(val,1)+0.1,YE(val,2),txtE{val,:}, 'Color','b');
 

Ja das ist aktuell noch richtig so. Smile

Aber schon mal Danke für die Hilfe und die Bestätigung. Demnach müsste er eigentlich mit der Variabel "val" die richtige Spalte der Koordinate in der Matrix auswählen.
Private Nachricht senden Benutzer-Profile anzeigen
 
LATMAB
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 31.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2013, 14:50     Titel:
  Antworten mit Zitat      
Hi Leute,

es kann geschlossen werden - Thema hat sich geklärt. Da macht man zwei Tage lang rum, entschließt sich dann um Hilfe im Forum zu bitten und dann ändert man eine Kommandozeile und alles läuft. Embarassed Oh man wie peinlich!

Danke nochmal an denny für seine schnelle Hilfe.

Gruß LATMAB
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 31.07.2013, 14:54     Titel:
  Antworten mit Zitat      
Und woran lag es ?
Private Nachricht senden Benutzer-Profile anzeigen
 
LATMAB
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 31.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2013, 14:56     Titel:
  Antworten mit Zitat      
Eigentlich ist es mir etwas peinlich und auch nicht aufgefallen, weil alle anderen Werte übergeben worden sind und er davor keine Fehlermeldung angezeigt hat. Aber die Zeile wird dich jetzt aus den Socken hauen!

Code:
guidata(hObject, handles);


Eigentlich hätte ich jetzt 20 Schläge in den Nacken verdient Embarassed Embarassed
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 31.07.2013, 15:53     Titel:
  Antworten mit Zitat      
Kann passieren, deswegen Debuggen bringt an der Stelle sehr viel und man kann schnell den Fehler eingrenzen.
Private Nachricht senden Benutzer-Profile anzeigen
 
LATMAB
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 31.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.08.2013, 10:30     Titel:
  Antworten mit Zitat      
Hallo,

ich hätte nochmal eine letzte Frage zu der Thematik dynamisches Popup. Und zwar hatte ich ja zuvor bereits erwähnt, dass entsprechend der Auswahl aus dem Popup das entsprechende Objekt in meinem Axes dargestellt wird. Nun kam mir noch die Idee, dass es User geben könnte, die evtl. zunächst ein falsches Objekt gewählt haben könnten und genau den letzten Plot rückgängig machen wollten. Meine erste Idee war dazu, die Auswahl zu speichern und dann per handle zu übergeben um dann durch eine zusätzlichen "Undo" Button die letzte Darstellung zu löschen. Funktioniert aber nur teilweise.

Code:
%Grafische Ausgabe der Auswahl aus Popup
 PE=plot(YE(val,1),YE(val,2),'bo');
 TE=text(YE(val,1)+0.1,YE(val,2),txtE(:,val),'Color','b');
 LE=plot([0 YE(val,1)],[0 YE(val,2)], 'Color','m');
%Übergeben der letzten Objekte, die geplottet wurden
 handles.PE=PE;
 handles.TE=TE;
 handles.LE=LE;
 guidata(hObject, handles);
 

So nachfolgend nun der Grund bzw. die Idee weshalb ich diese Variabeln übergebe.
Code:

% --- Executes on button press in undo.
function undo_Callback(hObject, eventdata, handles)
% hObject    handle to undo (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
PE=handles.PE;
TE=handles.PE;
LE=handles.PE;
delete(LE);
delete(PE);
delete(TE);

Leider wird aber nur PE aus dem Plot gelöscht, d.h. der erzeugte Punkt, und nicht der dazugehörige Text bzw. der Vektor, der vom Nullpunkt zum Punkt des Objektes erzeugt wird. Dachte mir, vielleicht schreibe ich es etwas anders - kompakter, vielleicht klappt es dann.
Code:

PE=handles.PE;
TE=handles.PE;
LE=handles.PE;
delete(PE;TE,LE);
 

Sooo, das war genau so wenig erfolgreich. Nun die Frage - ist es überhaupt so möglich Linien und Texte aus einem plot zu löschen. Wie gesagt wird derzeit nur der Punkt gelöscht. Oder muss ich evtl. die variablen anders derklarieren. Eine zweite Alternative wäre mit cobyobj und dann das vorherige Axes erneut laden, allerdings gefällt mir diese Variante nicht.

Gruß LATMAB[/code]
Private Nachricht senden Benutzer-Profile anzeigen
 
flo93
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 19.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.08.2013, 12:31     Titel:
  Antworten mit Zitat      
vl. ist nicht das was du meinst
aber man kann im plot die einzelnen Linien anklicken und ganz normal mit Enft löschen^^
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.