Hallo ich habe eine weitere Frage. Ich muss ein kurzes Programm schreiben, dass im Umkreis, den ich selbst per variable verstellen kann, um einen Punkt erkennt ob andere Punkte in diesem Umkreis liegen und wenn ja welche Koordinaten diese Punkte haben. Komme allerdings nicht Voran. Würde mich über jede Hilfe freuen.
Liegen bereits in einer Matrix vor, die Punkte erzeugt das Programm selbst speichert sie ab und soll dann im Umkreis um diese Punkte andere Punkte und den Abstand zu Ihnen detektieren.
Ich habe ein Matrix in der Punkte von Dreiecken gespeichert sind nun soll um die Punkte der Dreiecke in einem variablen umkreis um diese nach Eckpunkten von anderen Dreiecken gesucht werden. Im folgenden der Codeausschnitt der die Punkte generiert und abspeichert:
Code:
%% Dreieckspunkte berechnen clear i;
i=1;
while i<=AnzahlU-1
%Länge des Lotrichtungsvektors
LaengeRVLot(i)=sqrt(RVLot(i,1)^2+RVLot(i,2)^2);
%Berechnen der Punktkoordinaten in Richtung des normierten Lotvektors um
%den Betrag der Höhe eines gleichseitigen Dreiecks vom Mittelpunkt aus
PDreieck(i,1)=MP(i,1)+LaengeLot(i)*(1/LaengeRVLot(i))*RVLot(i,1);
PDreieck(i,2)=MP(i,2)+LaengeLot(i)*(1/LaengeRVLot(i))*RVLot(i,2);
i=i+1;
end axis equal
hold on
plot(PDreieck(:,1),PDreieck(:,2),'*')
%% Plotten der Dreiecke
%Abspeichern der 3 Dreieckskoorndinaten in die Matrix KnotenDreiecke
clear i;
i=1;
while i<AnzahlU
KnotenDreieckeX(i,:)=[KnotenU(i,1) KnotenU(i+1,1)];
i=i+1;
end clear i
i=1;
while i<=AnzahlU-1
KnotenDreieckeX(i,3)=PDreieck(i,1);
i=i+1;
end clear i;
i=1;
while i<AnzahlU
KnotenDreieckeY(i,:)=[KnotenU(i,2) KnotenU(i+1,2)];
i=i+1;
end
i=1;
while i<=AnzahlU-1
KnotenDreieckeY(i,3)=PDreieck(i,2);
i=i+1;
end clear i;
% PLotten der Dreiecke for i=1:AnzahlU-1 hold on
plot(KnotenDreieckeX(i,:),KnotenDreieckeY(i,:)) end clear i
for i=1:AnzahlU-1 hold on
plot(KnotenDreieckeX(i,1:2:3),KnotenDreieckeY(i,1:2:3)) end
Hallo,
also wenn ich es richtig verstehe, dann suchst du quasi die Punkte im Umkreis um den Ausgangspunkt X.
Ich würde es wie folgt lösen um die Punkte zu finden:
Angenommen du hast eine Matrix (3x6).
Dann würde ich (ausgehend von Zeile 4; Spalte 2) dein Startpunkt erst alle Zellen vertikal subtrahieren und dann die Matrix um 90° drehen um die Zellen wieder zu subtrahieren. An dem Punkt wo ein Vorzeichenwechsel stattfindet ist ein Peak oder Punkt (je nachdem wie du das bezeichen möchtest). Beide Ergebnismatrixen (aus den jeweiligen Subtraktionen) vergleichst du miteinander.
Hinterher bestimmst du den Radius um deinen Ausgangspunkt mittels Variable und suchst von dort aus die Punkte in der nähe.
Geht dies auch irgendwie mit der "rangesearch" funktion von Matlab?
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.