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

tsearch durch pointLocation ersetzen

 

Hecki
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 14.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2013, 14:02     Titel: tsearch durch pointLocation ersetzen
  Antworten mit Zitat      
Hallo zusammen!

Seit Matlab 2013 funktioniert die Funktion tsearch nicht mehr. Daher bin ich gezwungen einen alten Code mit der neuen Funktion pointLocation zu ersetzen. Leider hat sich dabei irgendwo der Fehlerteufel eingeschlichen und meine Ergebnisse sehen furchtbar aus.
Vielleicht hat ja hier jmd. einen Tipp für mich...

Im Code geht es darum, aus einer durch diverse Punkte aufgespannten Ebene diejenigen Punkte zu finden, die ein Dreieck bilden, welches einen gesuchten Punkt umschließt.

Mein ursprünglicher Code sieht so aus und funktioniert wunderbar:
Code:

% Netz aus Dreiecken bilden, Punkte liegen als Matrix mit X und Y Koordinaten vor.
TRI=delaunay(Punkte(:,1), Punkte(:,2);
% Zeile aus TRI finden, die das gesuchte Dreieck enthält
T=tsearch(Punkte(:,1), Punkte(:,2), TRI, gesuchterPunkt_X, gesuchterPunkt_Y);
% Zeile aus TRI, die Position der Punkte in den Ebenenpunkten angibt.
T_TRI=TRI(T,:);
% Dreieck als Matrix
gesuchtesDreieck=Punkte(T_TRI,:);
 


Nun mein neuer Code, der zwar durchläuft, aber sehr konfuse Ergebnisse liefert:
Code:

% Auch hier Dreiecksnetz erzeugen
DT=DelaunayTri(Punkte(:,1), Punkte(:,2));
% gesuchtes Dreieck ermitteln
PL=pointLocation(DT, [gesuchterPunkt_X, gesuchterPunkt_Y]);
% Position übergeben
PL_DT=DT(PL, :);
% Dreieck als Matrix
gesuchtesDreieck=Punkte(PL_DT,:);
 


Interessant ist vielleicht noch, dass die Ergebnisse vom ursprünglichen Code für "TRI und "T" mit dem neuen Code "DT" und "PL" übereinstimmen.

Würde mich über Hinweise zur Fehlersuche oder Lösungsvorschläge freuen.
Danke im Voraus!
Private Nachricht senden Benutzer-Profile anzeigen


Hecki
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 14.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.11.2013, 15:08     Titel:
  Antworten mit Zitat      
In meiner Fehlersuche bin ich zumindest ein wenig fortgeschritten.
Der Unterschied der Ergebnisse ergibt sich durch unterschiedliche Dreiecksnetze. Die Funktion delaunay liefert ein anderes Netz als DelaunayTri.

Gibt es zu DelaunayTri und pointLocation andere alternative Funktionen, die mir ein Dreiecksnetz erzeugen und mir daraus anschließend das umgebende Dreieck eines innerhalb des Netzes gesuchten Punktes liefern?

Ich verzweifle gerade ein wenig...
Jetzt steht in der Dokumentation zu DelaunayTri allerdings schon "DelaunayTri will be removed in a future release".
Private Nachricht senden Benutzer-Profile anzeigen
 
Hecki
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 14.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.11.2013, 13:12     Titel:
  Antworten mit Zitat      
Falls es irgendwann mal jemand mit dem selben Problem konfrontiert sein sollte, ich habe inzwischen eine Lösung gefunden.
Diese sieht wie folgt aus:
Code:

% Dreiecksnetz erzeugen
DT=delaunayTriangulation(Punkte(:,1), Punkte(:,2));
% gesuchtes Dreieck ermitteln
PL=pointLocation(DT, [gesuchterPunkt_X, gesuchterPunkt_Y]);
% Enthaltene Positionen ermitteln
CL=DT.ConnectivityList(PL,:);
% Punkte auslesen
PT=DT.Points(CL,:);
% Um dann neben den Koordinaten die zusätzlichen Informationen der ursprünglichen Punkte zu erhalten...
for k=1:3
gesuchtesDreieck(k,:)=Punkte(Punkte(:,2)==PT(k,1) & Punkte(:,3)==PT(k,2), :);
end
 


Die ursprüngliche Funktion tsearch fand ich allerdings viel besser. Schade, dass diese nicht mehr funktioniert.
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.