Verfasst am: 31.01.2011, 21:30
Titel: Wieso aendert sich die Colorbar???
Hallo,
ich habe folgendes Problem. Ich habe mir zu einer Bilderserie eine bestimmte Colormap und Colorbar gebastelt (siehe Code). Zuerst lade ich ein Bild, wandle es in ein RGB-Bild (mit meiner Colormap) um und stelle es dann mit imshow und meiner Colorbar dar. Wie in dem unteren Minimalbeispiel klappt dies auch super fuer das Clownbild. Nun ersetze ich dieses Bild durch ein neues Bild (auch zu RGB mit meiner Colormap umgewandelt) mittels dem "set"-Befehl fuer das "CData"-Feld von imshow. Das neue Bild wird auch angezeigt, jedoch stimmt meine Colorbar nicht mehr? Matlab hat die YTicks einfach geaendert, warum? Und wie kann ich dies umgehen?
Hier das Minimalbeispiel, ich habe noch 2 Varianten fuer das 2. Bild (I2) auskommentiert um zu zeigen was z.B. funktioniert und was nicht:
Kannst Du bitte ein paar Spaces in die riesenlangemegaschlangenartige Code Zeile einfügen? Dann könnte ich Deine Mitteilung leichter lesen, da ich auf meinem lustigen 1024 Pixel breiten Bildschirm nicht hin und herscrollen müsste.
Hilft es, wenn Du in IMSHOW die ColorMap Property manuell setzt?
Warning: Ignoring 'Colormap' parameter provided with a truecolor image.
In imuitools\private\imageDisplayValidateParams>validateMap at 97
In imuitools\private\imageDisplayValidateParams at 32
In imuitools\private\imageDisplayParseInputs at 79
In imshow at 199
Falls du was anderes meintest, dann beschreib es bitte nochmal genauer. Das Bild muss aber ein RGB-Bild sein, da ich ein Overlay eines grauen und farbigen Bildes (mit Transparenz) mache (ohne die Freeze Color Funktion aus der FEX). Ansonsten ist das Minimalbeispiel auch lauffähig, falls du selber etwas anderes probieren möchtest.
Noch eine kleine Frage am Rande (trotz das die erste noch nichtmal beantwortet ist): Ist es schneller bei callbacks von uicontrols Variablen per settappdata zu übergeben (und per getappdata in callback zu laden) oder direkt mit bei der callbackdeklaration:
ich sag einfach mal: ausprobieren. Meine Vermutung wäre, dass die uicontrol-Variante schneller ist, dass die zeitlichen Unterschiede im Verhältnis zur restlichen Laufzeit aber vernachlässigbar sind; allerdings kann ich da falsch liegen.
Wenn immer die gleichen 10 Variablen verwendet werden sollen, würde ich die der Übersichtlichkeit halber in eine Struktur packen.
Wenn du die GUIs programmatisch mit uicontrol-Befehlen aufbaust, könntest du die Callbacks auch als nested functions programmieren. Dann haben sie automatisch Zugriff auf alle Variablen. Du musst allerdings höllisch aufpassen, dass du nicht eine dieser Variablen versehentlich überschreibst. Aus diesem Grund bin ich eigentlich kein Befürworter dieser Variante.
Die andere Frage überlasse ich Jan
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Ich hatte vergeblich in den FIGURE Properties nach ColorMapMode gesucht. Aber die entsprechende Eigenschaft gehört zu den AXES, wie Du ja richtig herausgefunden hast.
Die Geschwindigkeit der Callbackaufrufe ist wahrscheinlich nicht signifikant unterschiedlich. Sie hängt aber auch davon ab, wie groß die übergebenen Arrays sind. Wenn ein 200MB-Array dabei ist, können schon Unterschiede auftreten, falls auf die eine Weise Matlab eine SharedDataCopy schaffte, auf die andere aber nicht. In dem Fall hilft leider nur ausprobieren - und mit der nächtsen JIT-Version kann sich die Situation wieder ändern.
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.