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

Erstellen einer Oberflächenplots aus XYZ Koordinaten

 

gast000
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 28.08.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2015, 12:45     Titel:
  Antworten mit Zitat      
das Pn05 ist die Funktion in der die Koordinaten berechnet werden.
zu Beginn ist eine Kontur vorhanden, beispielsweise in 2D und diese wird in Abhängigkeit von x "gezogen" und somit entsteht ein 3 dimensionales gebilde


als Anlehnung ist es vllt vergleichbar mit einem Kreis der Beliebig in einem 3D Koordinatensystem liegt. dieser wird in Abhängigkeit von x extrudiert/gezogen. - Hierbei würde ein Schlauch entsehen.

man hat eine Mathematisch nicht beschreibbare Kontur im 2D bereich und extrudiert diese entlang einer Kurve( mathematisch bestimmt)

Ich bedanke mich für Ihre Hilfe, wenn auch vorerst keine Lösung gefunden werden konnte.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.08.2015, 12:53     Titel:
  Antworten mit Zitat      
Hallo,

die entscheidende Frage ist also, wie (und damit meine ich: mit welchem Code) diese Pn05 erstellt wurde.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
gast000
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 28.08.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.08.2015, 13:05     Titel:
  Antworten mit Zitat      
das erstellen von Pn05 war in mathcad einfacher, lässt sich aber in matlab besser erklären.

ich habe 40 startkoordinaten(x,y,z), diese sind aus Excel tabelle (von CAD datei) einglesen und zeigen eine Kontur


P=xlsread('Autopunkte_matlab.xls','B3:D42'); auslesen der Punkte


for p=1:1:40

X=P(p,1);
Y=P(p,2);
Z=P(p,3);



Für jeden Schleifendurchgang entsteht also ein neuer Punkt.

for x0=0:1:34.3


in der schleife für die Punkte wird eine weitere Schleife für x0 aufgerufen, alle 3 Punkte werden mit unterschiedlichen Funktionen umgeformt in denen x0 eine Variable ist.


Also entstehen für jeden einen Durchgang der Schleife 34 neue Punkte (xyz Koordinaten)
also 1360 Punkte insgesamt.
Diese entstandenen Koordinaten sind Pn05, abhängig von p und x0.
Private Nachricht senden Benutzer-Profile anzeigen
 
gast000
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 28.08.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.09.2015, 08:45     Titel:
  Antworten mit Zitat      
Hallo Harald,
habe das Problem mit patch lösen können

Vielen Dank nochmal für deine Hilfe
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.09.2015, 18:42     Titel:
  Antworten mit Zitat      
Hallo,

für andere, die ähnliche Probleme haben, wird auch interessant sein, wie du das Problem lösen konntest.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
gast000
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 28.08.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.09.2015, 07:22     Titel:
  Antworten mit Zitat      
Das Verbinden von Punktewolken, so wie es mein Ziel war, ist mit surf nicht unbedingt möglich.

Dadurch, dass meine Punkte verstreut im Raum lagen und für ein XY-Wert mehrere Z-Werte existierten konnte ich eine Darstellung mit meshgrid, griddata, surf, etc. ausschließen.

Die Punkte sind in einer Excel Tabelle gespeichert.
Die Funktion patch ist dafür genau das Richtige. Ich habe mein Problem lösen können indem ich Eckpunkte und Flächen definiert habe (siehe Matlab-Hilfe, patch/faces und vertices)

Die Verbindung der Punkt, und das Erstellen einer Fläche zwischen den Punkten, geht, über patch.
Zuerst sollte man eine Matrix erstellen mit allen XYZ-Koordinaten

z.b.
Code:
vert=(x1 y1 z1;x2 y2 z2; ... xn yn zn)



diese stellen die Eckpunkte

Als nächstes muss definiert werden welche Punkte miteinander verbunden werden sollen.

dafür muss eine weitere variable erstellt werden

Code:
faces=[1 2 3 4; 2 3 8 6;....]


Die n-by-m matrix sagt aus, welche Punkte miteinander verbunden werden sollen
1 2 3 4 bedeutet, dass zwischen den Eckpunkten x1y1z1, x2y2z2, x3y3z3 und x4y4z4 eine Fläche aufgespannt werden soll.

in meinem Fall waren die Koordinaten in der Tabelle nach A und B geordnet (siehe eins der Bilder, da habe ich notiert was ich mit A und B meine)
mit einer Schleife konnte ich dann alle Punkte wie gewollt miteinander verbinden ( das funktioniert glaube ich nur so schön wenn die werte in meinem fall geordnet sind.



Code:
 for d1=1:AK-1                  %Definieren, welche Punkte verbunden werden sollen
      if mod(d1,SP)==0         %AK ist die Anzahl der zeilen in der Excel Tabelle
          d1=d1+1;                 %d1 beschreibt die ausgewählte Zeile
      end
      f1=d1;                         %f1/2/3/4 ist die übergabe an die funktion faces,            
      f2=d1+1;                     %bestimmen welche eckpunkte verbunden werden
      f3=d1+40;                   %sollen
      f4=d1+41;
      faces1=[f1 f2 f4 f3];
      D(R3,:)=faces1;                    %erstellen der Face-matrix, schreiben in nächste
      R3=R3+1;                            %zeile nach jedem durchlauf
      d1=d1+1;
      faces=D;
             
  end
 
       
       
    p1 = patch('Faces',faces,'Vertices',verts);    %patch zum erstellen der Fläche
    set(gca,'CLim',[-70 50])                              
    cdata = FW;           %Farbe
    set(p1,'FaceColor','flat','CData',cdata,'CDataMapping','scaled')
    hold on  
         xlabel('X');       %Achsenbeschriftung
         ylabel('Y');
         zlabel('Z');
         colorbar;

 




Hoffe dass jemand noch so ein Problem hatte und damit weiter geholfen werden konnte

P.s. in der matlab hilfe stehen noch mehr infos zu patch, waren mir recht schlüssig die erläuterungen
edit winkow: code umgebung eingefügt
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.