Verfasst am: 11.12.2014, 14:21
Titel: Achsenbeschriftungen nach zweiten surf gespeigelt
Grüßt euch Matlaber,
1. Problem:
Ich habe ein 2D-Kennfeld mit "surf(x,y,z1)" dargestellt (Ansicht von oben mit "view(2)") und ein zweites Kennfeld ebenfalls mit "surf(x,y,z2)" in der gleichen axes darübergelegt. Um die Felder mit verschiedenen Farben darzustellen, teile ich die colormap auf. Das zweite Kennfeld ist in Abhängigkeit seiner Höhe transparent gesetzt (d.h. je geringer z2, desto höher die Transparenz). Nach dem Einfügen des zweiten Kennfeldes sind nun alle Achsenbeschriftungen gespeigelt dargestellt.
Im Forum gefunden:
Ich konnte das Problem teilweise lösen, indem ich den Code-Schnipsel:
feature('UseGenericOpenGL', 1) % bzw: 0
verwende. Wenn ich das einfüge, werden alle Beschriftungen wieder richtig herum gespiegelt. ABER:
-->1. Neues Problem:
Jetzt ist allerdings die Qualität der Darstellung meines zweiten Kennfeldes, welches über dem ersten liegt, beeinträchtigt! Dazu habe ich mal zwei kleine Ausschnitte der Darstellung als Screenshots mitgebracht.
2. Probelm:
Nach Einfügen des zweiten Kennfeldes funktioniert der Befehl:
shading interp
nicht mehr so, wie er soll. Vor Einfügen des zweiten Kennfeldes wurden die Werte entlang der Grenze zwischen zwei Farbbereichen "geglättet", um glatte Linien zwischen z.B. dem gelben und dem orangen Farbbereich zu erzeugen (s. Bilder). Nach Einfügen des zweiten Kennfeldes wird die "Trennlinie" zwar auch geglättet, verscwhwimmt allerdings etwas -> Keine klare Abgrenzung der Farbbereiche mehr.
FRAGEN:
1. Was kann ich tun, um die ursprüngliche Qualität der Darstellung des zweiten Kennfeldes beizubehalten, aber gleichzeitig die Achsbeschriftungen korrekt darzustellen?
2. Matlab hat anscheinend ein Problem mit der gleichzeitigen Ausführung der Befehle "shading interp" und alpha(Kennfeld2, transp).. Was kann man dagegen machen?
% Aufteilung der Colormap für die beiden Kennfelder!
c1 = (z1-min(z1(:)))/(max(z1(:))-min(z1(:)))/2-1/128;
c2 = (z2-min(z2(:)))/(max(z2(:))-min(z2(:)))/2+0.5;
c = [gray;hsv];
% Maximalwertbegrenzung, sodass auch geringe Werte (Höhen) sichtbar bleiben
a = z1;
Max_alt = max(a(:));
Max_neu = Max_alt/10;
a(a>=Max_neu) = Max_neu;
% Transparenz des Kennfeldes abhängig von der Höhe der Felder
alpha(Kennfeld1, a);
% Glättung der Übergänge shading interp
hold off
% Zurückspiegeln der Achsenbeschriftungen
feature('UseGenericOpenGL', 1)% bzw: 0
Hatte noch niemand das gleiche Probem? Wäre gut, wenn sich doch jemand findet!
Beste Grüße
Nuby
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.