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

Fläche aus Punkten erzeugen

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.10.2008, 15:43     Titel: Fläche aus Punkten erzeugen
  Antworten mit Zitat      
Hallo
Ich habe ein Problem. Ich habe ca 900 Koordinatenpunkte als x,y und z Koordinate. Diese kann ich in einem 3D Plot als Punktwolke darstellen. Es wäre schön wenn ich diese Punktwolke durch eine Fläche darstellen könnte die durch die Koordinatenpunkte verläuft. Im Prinzip eine einfache Vernetzung der Punkte untereinander.
Bisher hab ichs mit Mesh, Surf, griddata usw. probiert. Aber es hat alles nicht so funktioniert wie ich mir das dachte. Die Punkte sind auch nicht regelmäßig angeordnet sondern es gibt teilweise "ausreißer"
Hier mal ein Bild als Punktwolke

untitled.jpg
 Beschreibung:

Download
 Dateiname:  untitled.jpg
 Dateigröße:  78.69 KB
 Heruntergeladen:  3775 mal


Idefix_1024
Forum-Century

Forum-Century


Beiträge: 230
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2008, 18:11     Titel:
  Antworten mit Zitat      
Ich denke Du möchtest sowas machen ?
Code:

% z wurde in Abh. von x und y gemessen
% Festlegen des Gitters in x und y Koordinate
rangeX  = -10:0.1:10;
rangeY  = -10:0.1:10;
[X,Y]=meshgrid(rangeX,rangeY);
% Interpolation der Messwerte Z an den Gitterpunkten X,Y
Z=griddata(x,y,z,X,Y,'cubic');
% Plot als Fläche
surf(X,Y,Z)
hold off
grid on
 


edit by steve: Code-Umgebung ergänzt - Bitte zukünftig selbst dran denken! (Button oben mittig)
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2008, 14:14     Titel:
  Antworten mit Zitat      
Hm also irgendwie versteh ich das nicht so ganz.
Ich hab aus einer Exeltabelle die Daten per
X = xlsread('Dateiname.xls', 'A1:A15');
Y = xlsread('Dateiname.xls', 'B1:B15');
Z = xlsread('Dateiname.xls', 'C1:C15'); einglesen.
Die Daten sehen folgendermaßen aus:
A B C
-16.2931000000 49.56741519 0.006709445
-16.2931000000 49.34004831 0.006716661
-16.2931000000 49.11270578 0.00670634
-16.2931000000 48.88528762 0.006663554
-16.2931000000 48.6578424 0.006623306
-15.0862000000 49.43602645 0.006744063
-15.0862000000 49.21149557 0.006647981
-15.0862000000 48.98703077 0.006586306
-15.0862000000 48.76251322 0.006560996
-15.0862000000 48.53790553 0.006572518
-13.8793000000 49.30473639 0.006616203
-13.8793000000 49.08298479 0.006565831
-13.8793000000 48.8613293 0.006550838
-13.8793000000 48.63963688 0.006512847
-13.8793000000 48.41800321 0.006479297
Was mach ich da mit dem range? Oder brauch ich das hier gar nicht?
Wieso wird mein Z interpoliert wenn ich es doch in der Tabelle gegeben habe?
Das ist jetzt nur mal ein kleiner Beispielbereich aus meinen Messdaten eigentlich sind es knapp 1000 Werte.
Hoffe man versteht mein Porblem so halbwegs Embarassed
 
Idefix_1024
Forum-Century

Forum-Century


Beiträge: 230
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2008, 15:28     Titel:
  Antworten mit Zitat      
es ist so
Matlab erwartet bei dem Befehl "surf" immer jeweils einen X Y Z Wert, der schön auf ein regelmäßiges Gitter passt...
also X = 1; X = 2 usw
bei Messwerten hat man aber eigentlich IMMER 1.021 oder sowas gemessen und nie 1.0...
also gehe ich immer so vor wie bereits oben abgedruckt (evtl hätte ich es gleich kommentieren sollen, sorry!)
ich erzeuge mit "meshgrid" das von "surf" geforderte schöne Raster im Bereich von rangeX für X und rangeY für Y-Werte.
Nun muss ich im nächsten Schritt den Messwert an der Stelle berechnen, da ich ja knapp daneben gemessen habe... hier mal ein kurzes Bsp
X = 1.1; Y = 1.2; Z = 4.3
ich brauche den Wert X=1; Y=1; Z = ?
mit Z=griddata(x,y,z,X,Y,'cubic'); erhalte ich den zu X =1 und Y = 1 passenden Z Wert an dem von mir selbst gewählten Gitterpunkt X = 1 und Y = 1

und fertig ist der Plot

Bei Deinen Messdaten würde ich mit rangeX und rangeY den Bereich festlegen für den es überhaupt Z Werte gibt in deiner Datensammlung und dann sollte eine Fläche bei rauskommen oder etwa nicht ?

hmm gar nicht so einfach das ohne größeres Beispiel zu erklären... aber die Befehlsfolge verwende ich eigentlich immer bei Messdaten...

x y z wären die Messdaten und
X Y Z sind dann die Plot-Daten wobei X und Y eine Fläche aufspannen mit regelmäßigem Gitter... und an jedem Gitterpunkt wird ein Z Wert interpoliert und geplotet
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2008, 17:13     Titel:
  Antworten mit Zitat      
Ah, OK, danke jetzt hab ichs verstanden und es funktioniert sogar. Very Happy
Vielen Dank das hat mich echt weit vorangebracht
 
Idefix_1024
Forum-Century

Forum-Century


Beiträge: 230
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2008, 18:51     Titel:
  Antworten mit Zitat      
jo dacht ichs mir doch...

diese Taktik wende ich inzwischen schon seit einer ganzen Weile immer wieder an... und klappt eigentlich recht schön :D
Private Nachricht senden Benutzer-Profile anzeigen
 
freecastor
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 01.03.10
Wohnort: ---
Version: 2008a
     Beitrag Verfasst am: 01.03.2010, 12:46     Titel:
  Antworten mit Zitat      
Hallo,
ich will das Thema mal aufgreifen. Ich habe dasselbe Problem mit dem unregelmäßigen Messgitter, dabei hat mir der Tipp schon sehr geholfen.

Jetzt habe ich noch das Problem, dass dadurch natürlich auf dem ganzen Grid interpoliert wird (also einem Rechteck), was nicht der Geometrie meines Messobjekts entspricht.
Wie kann ich auf geschickte Art die Bereiche, die nicht zu meiner Geometrie gehören, als NaN definieren?
Oder habt ihr ganz andere Ideen, wie ich da ran gehen kann?

Habe mal ein Bild des Plots zur Verdeutlichung angehängt.

untitled.jpg
 Beschreibung:

Download
 Dateiname:  untitled.jpg
 Dateigröße:  210.9 KB
 Heruntergeladen:  3331 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
pitaz
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 03.12.08
Wohnort: Zürich, Schweiz
Version: R2009a
     Beitrag Verfasst am: 27.04.2010, 16:50     Titel:
  Antworten mit Zitat      
Hi

Du kannst dir ja jetzt einfach diejenigen Punkte, die du benötigst extrahieren.

Du musst einfach schauen, dass dein grid genügend gross ist, so dass alle benötigten Punkte innerhalb liegen
Private Nachricht senden Benutzer-Profile anzeigen
 
Odyssee
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 29.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2010, 15:15     Titel:
  Antworten mit Zitat      
Hey,

mir ist bei meinen Messwerten ein Problem aufgefallen und zwar liegt das an der Interpolation/Extrapolation die hier angewandt wird. Ich habe das ganze für 2 Messreihen angewandt, die sich aus logischer Sicht nicht überschneiden können. Die Messwerte tun dies auch nicht, wohl jedoch die Surfaces.

Gibt es eine Möglichkeit die Interpolation zu steuern? Numerische Mathematik ist jetzt schon was her, aber da gab es doch einige ganz nette Verfahren, die einen besseren fit zu lasten der Rechenzeit ermöglichten.

Kann Matlab so etwas auch?

Gruß,
odyssee
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.