Verfasst am: 17.09.2012, 15:29
Titel: grafische Darstellung von Signaleigenschaften
Hallo!
Ich teile eine Figure in 2 subplots. Im oberen subplot zeichne ich ein Signal, aus dem ich bestimmte Eigenschaften berechne. Diese Eigenschaften würde ich gerne im unteren subplot grafisch darstellen, und zwar an Hand von 3 Zuständen. Das Ganze sollte ungefähr so aussehen:
O Zustand1
O Zustand2
O Zustand3
Ich berechne also aus dem Signal eine Eigenschaft, diese ist entweder Zustand1, 2 oder 3. Je nach dem, was bei der Berechnung rauskommt, soll der Kreis bei dem jeweiligen Zustand farbig erscheinen.
Meine Frage: Wie kann man sowas realisieren? Ich habe noch keine Erfahrung mit GUIs, brauch ich für so eine einfache Darstellung eine GUI? Und kann man das in einer Figure zusammen mit dem Signal (wie oben beschrieben) überhaupt darstellen? Es kann auch eine andere Anzeigemethode sein, bin für jeden Vorschlag dankbar!
Ich habe nun einen Entwurf gemacht: Im oberen subplot erscheint das Signal. Je nach dem welche Form dieses Sinal hat soll nun im unteren subplot Zustand1, 2 oder 3 aktiviert werden (der Kreis rot leuchten) -> siehe Anhang
Ich habe dafür einfach 3 Bilder gezeichnet, bei denen je ein anderer Zustand aktiv ist (im Anhangs-Beispiel Zustand 1). Je nach dem welcher Zustand aktiv sein soll zeige ich das entsprechende Bild (if-Anweisung) mit imshow() an.
Mir erscheint diese Methode etwas unprofessionell, hat jemand einen besseren Vorschlag?
Also sollte ich eine GUI verwenden oder? wie gesagt, ich habe damit noch keine Erfahrung, werde mich jetzt aber damit beschäftitgen!
Ich würde die 3 Zusatände gerne auch farblich markieren (z.B. Zustand1 rot, 2 gelb und 3 grün, wie ein Ampelsystem). Ich denke bei den Chekcboxen ist das nicht möglich oder? Gibt es da auch irgendwelche Buttons oder so, die man farblich darstellen kann?
Funktioniert soweit ganz gut, aber gibt es eine Möglichtkeit, dem Button einen Rahmen zu geben? Wenn ich 'BorderType' oder BorderWidth' im set-Befehl verwende, bekomme ich eine Fehlermeldung:
??? Error using ==> set
Invalid uicontrol property: 'BorderType'.
Error in ==> SignalEvaluation at 85
set(Button(2),'String','Zustand 2','FontSize',24, 'FontWeight','bold','BackgroundColor', [1, 1,
0],'BorderType','Line');
Leider kann man den Border der Buttons nicht ohne Weiteres in Matlab verändern. Es gibt aber eine undokumentierte Funktion dafür: http://undocumentedmatlab.com/blog/customizing-uicontrol-border/. Aber wie alles Undokumentierte in Matlab kann das beim nächtsen Release bereits zu ernsten Fehlern führen. Deshalb wäre ich damit sehr vorsichtig, d.h. ein TRY-CATCH drum herum, ein Kommentar dazu woher die Methode stammt und mit welcher Matlab Version es funktioniert, ein weitere Kommentar in die Help-Section (erster Kommentar-Block nach der "function"-Zeile).
Ich habe schon bei Programmen, die garantiert und Matlab 5.3 bis 2009a laufen mussten einfach einen zweiten etwas größeren Button dahinter gesetzt. Das sah gut aus bei den alten rechteckigen Buttons und den modernen abgerundeten auch.
okay danke... Das Problem das ich habe ist die Grafik im MS Word und in weiterer Folge als pdf. Ich kopiere die Figure immer mit "edit" -> "copy figure" und füge sie dann im Word ein. Im Word gehts noch so halbwegs mit der Qualität, wenn ich das Ganze dann aber in pdf umwandle, erscheinen die Ränder des Buttons nicht mehr wirklich schön...
Ich werd mal versuchen, dieses Problem zu lösen...
hab das Problem jetz gelöst: Habe mit "axes" eine neue Oberfläche in der figure erstellt und dann einfach mit "rectangle" Rechtecke erzeugt. Mit einem Handle auf diese Rechtecke kann ich dann deren Eigenschaften verändern (da kann man auch einen schönen Rahmen erzeugen und die passende Farbe des Rechtecks). Für die beschriftung des Rechtecks hab ich keine Eigenschaft gefunden (wie 'String' bei den Buttons vorher), dafür habe ich einfach mit der "text"-Funktion einen Text über das Rechteck gelegt. Vielleicht fällt jemandem für den Text was besseres ein (falls ja bitte antworten ).
Das klingt sehr gut. Ich glaube nicht dass es etwas besseres als text() gibt, um einen Text darzustellen.
Gruß, Jan
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.