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

Darstellung von 2D-Projektionen als RGBimages in 3D-plot

 

Joachim
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 31.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2013, 12:17     Titel: Darstellung von 2D-Projektionen als RGBimages in 3D-plot
  Antworten mit Zitat      
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

Code:

ha=gca;
set(gca,...
  'XLim',sort([w1(1),w1(end)]),...
  'YLim',sort([w2(1),w2(end)]),...
  'ZLim',sort([w3(1),w3(end)]));
if strcmpi(tick_mode,'man'),
  set(gca,...
    'XTick',ticks,...
    'YTick',ticks,...
    'ZTick',ticks)
end
if strcmpi(label_mode,'man'),
  set(gca,...
    'XTickLabel',labels,...
    'YTickLabel',labels,...
    'ZTickLabel',labels);
end


daspect([100 100 4]);
view(3);
camproj(projection_type);


if flag_xlabel,xlabel('\omega_{\tau} (cm^{-1})');end
if flag_ylabel,ylabel('\omega_{t} (cm^{-1})');end
if flag_zlabel,zlabel('\omega_{T} (cm^{-1})');end

set(gca,'TickDir','out')
axis vis3d
title(datatype);

if nargout>=1
  varargout{1}=ha;
end
 


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.

Gruesse,

Joachim
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 31.07.2013, 13:07     Titel: Re: Darstellung von 2D-Projektionen als RGBimages in 3D-plot
  Antworten mit Zitat      
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?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Joachim
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 31.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2013, 14:47     Titel:
  Antworten mit Zitat      
Hallo Jan,

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
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 - 2025 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.