Verfasst am: 31.07.2013, 12:17
Titel: Darstellung von 2D-Projektionen als RGBimages in 3D-plot
Hallo,
fuer folgendes Problem konnte ich bisher selbst keine Loesung finden.
Vielleicht kann mir jemand mit einem Vorschlag weiterhelfen.
Fuer Datensaetze mit Funktionswerten in Abhaengigkeit von drei Variablen x, y und z
habe ich Projektionen in die (x,y)-, (x,z)-, und (y,z)-Koordinatenebenen berechnet und unter Verwendung einer speziellen Farbcodierung RGBimages erstellt.
Diese möchte ich in in einem 3D-plot darstellen.
Dazu verwende ich die Funktion mapshow:
Code:
%yz plane
h1=mapshow(w2,w3,sxRGBimage);
h1=findobj(h1,'type','patch');
for j=1:length(h1),
xd=w1(end).*ones(size(get(h1(j),'YData')));
yd=get(h1(j),'XData');
zd=get(h1(j),'YData');
set(h1(j),'XData',xd,'YData',yd,'ZData',zd);
end set(h1,'FaceLighting','none');
%xz plane
h2=mapshow(w1,w3,syRGBimage);
h2=findobj(h2,'type','patch');
for j=1:length(h2),
yd=w2(end).*ones(size(get(h2(j),'YData')));
zd=get(h2(j),'YData');
set(h2(j),'YData',yd,'ZData',zd);
end set(h2,'FaceLighting','none');
%xy plane
h3=mapshow(w1,w2,szRGBimage);
h3=findobj(h3,'type','patch');
for j=1:length(h3),
zd=w3(1).*ones(size(get(h3(j),'XData')));
set(h3(j),'ZData',zd);
end set(h3,'FaceLighting','none');
Die x-, y- und z-Koordinatenachse sind durch die Matrizen w1, w2 und w3 definiert, die Projektionen in Form von RBGimages sind mit sxRGBimage, syRGBimage und szRGBimage bezeichnet.
Um einen 3D-plot zu generieren, verwende ich im Anschluss den code
Als Ergebnis erhalte ich allerdings einen 3D-plot mit neutralen Koordinatenflächen an Stelle der RGBimages. Lasse ich das zweite eingefuegte Codefragment weg, werden die RGBimages angezeigt, allerdings ausschliesslich als (x,y)-Koordinatenebene.
Ich vermute, dass eine Verbindung zwischen dem ersten und dem zweiten Codefragment hergestellt werden muss, ohne zu wissen, wie diese konkret aussehen koennte.
Bei Modifikation des ersten Codefragments und Verwendung der Funktion contourf an Stelle von mapshow werden zwar zweidimensionale Projektionen innerhalb des 3D-plots mit einzezeichneten Konturen dargestellt, was fuer meinen Zweck aber keine geeignete Loesung ist.
Falls mir jemand weiterhelfen kann, freue ich mich ueber Loesungsvorschlaege.
Verfasst am: 31.07.2013, 13:07
Titel: Re: Darstellung von 2D-Projektionen als RGBimages in 3D-plot
Hallo Joachim,
Ich verstehe oder finde die Frage noch nicht.
Zitat:
Ich vermute, dass eine Verbindung zwischen dem ersten und dem zweiten Codefragment hergestellt werden muss, ohne zu wissen, wie diese konkret aussehen koennte.
Ist das die Frage? Was genau ist denn das "erste und zweite" Code-Fragment und was könnte eine solche "Verbindung" sein?
in meiner Frage sind zwei groessere Abschnitte mit matlab-code enthalten. Diese habe ich (von oben nach unten) als erstes und zweites Codefragment bezeichnet (Fragment deshalb, weil der eingefuegte code nur die Teile einer von mir implementierten matlab-Funktion wiedergibt, die mir fuer die Fragestellung relevant erscheinen).
Mit "Verknuepfung" meine ich folgendes: Waehrend im ersten Codefragment die RGBimages den Koordinatenebenen zugeordnet werden, enthaelt das zweite Codefragment Anweisungen fuer die Erstellung des 3D-plots. Wenn jeweils nur eines der Codefragmente im Programm enthalten ist, erhalte ich im Fall des ersten die perspektivische Darstellung der (x,y)-Ebene, wobei aber die z-Komponente des 3D-plots fehlt. Im Fall des zweiten Codefragments werden alle Koordinatenebenen des 3D-plots angezeigt, allerdings enthalten diese nicht wie gewuenscht die entsprechenden RGBimages. Daher ist meine Vermutung, dass moeglicherweise eine Zuordnung von Variablen aus dem ersten Codefragment zu Variablen aus dem zweiten Codefragment das Problem beheben könnte. Die Frage ist, wie eine solche Verknuepfung konkret aussehen koennte, falls darin die Loesung besteht.
Moeglicherweise gibt es aber auch eine Loesung, bei der nur innerhalb von einem der beiden Codefragmente Aenderungen erforderlich sind.
Dafuer spricht , dass die Darstellung des 3D-plots mit zweidimensionalen Projektionen auf die Koordinatenflächen einwandfrei funktioniert, wenn an Stelle der Funktion mapshow die Funktion contourf (mit veraenderten Parametern beim Aufruf) verwendet wird. Die Verwendung von contourf eignet sich aber nicht als Loesung fuer mein Problem, da es mir auf die Darstellung der RGBimages mit einer speziellen Farbcodierung ankommt.
Gruesse,
Joachim
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.