Matroids Matheplanet Forum Index
Moderiert von mire2
Mathematische Software & Apps » Matlab » for-Schleife
Autor
Universität/Hochschule for-Schleife
Nummi
Junior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 01.12.2021
Mitteilungen: 6
  Themenstart: 2021-12-21

Hallo zusammen Folgendes Problem (Matlab-Neuling): Ich habe aus 2D-LiDAR-Daten eine 3D-Punktwolke erzeugt. Die Daten werden grundsätzlich stets um 5° gedreht, bis die ganze Umdrehung abgedeckt ist (siehe Abb.) Anschliessend habe ich über jeweils 3 Punkte Ausgleichsgeraden gelegt. Diese geben mir die Steigung an. Da der gegebene Grenzwert bei 30° liegt, habe ich die einzelnen Geraden jeweils rot und grün geplottet. Dies habe ich bisher für den Winkel 5° erledigt. Nun möchte ich dies durch eine Schleife auch für die restlichen Winkel (5° bis 360°) rechnen. Schlussendlich soll ein 3D-Plot mit den jeweiligen Ausgleichsgeraden entstehen. Ich habe es versucht, bin jedoch schon früh gescheitert. Mir ist nicht ganz klar, wie ich die Schleife aufbauen soll. Ich hoffe, man weiss was ich in etwa meine. Ich danke euch für eure Ratschläge :) https://matheplanet.com/matheplanet/nuke/html/uploads/b/55185_Screenshot_2021-12-21_090850.png https://matheplanet.com/matheplanet/nuke/html/uploads/b/55185_Screenshot_2021-12-21_090817.png PS: Wie kann man Dateien anhängen? So könnte ich euch die Daten zur Verfügung stellen. Hier das bisherige MatLab-Skript: M = readmatrix("Messung_4_effektiv.txt"); x = (M(:,1)); y = (M(:,2)); z = (M(:,3)); ptCloud = pointCloud(M); ptCloud pcshow(ptCloud) zlim([-2300 -1800]) winkel = round(atan2d(y, x), 2); uWinkel = unique(winkel); r = sqrt(M(:,1).^2 + M(:,2).^2); rSelect5 = r(winkel == 5); zSelect5 = z(winkel == 5); rSelect5_1 = rSelect5(rSelect5 <= 500); zSelect5_1 = zSelect5(rSelect5 <= 500); anzahlWerte = size(rSelect5_1,1) alle_i = 1:2:anzahlWerte-2; tneu = cell(1, numel(alle_i)); xneu = cell(1, numel(alle_i)); zneu = cell(1, numel(alle_i)); for j = 1:numel(alle_i) i = alle_i(j); k = (i:i+2); rZone5 = rSelect5_1(k); zZone = zSelect5_1(k); tneu{j} = polyfit(rZone5, zZone,1) xneu{j} = rZone5; zneu{j} = polyval(tneu{j},xneu{j}); Steigung{j} = 360/(2*pi) * atan(tneu{j}(1)) if Steigung{j} <= 30 plot(xneu{j},zneu{j},"r") else plot(xneu{j},zneu{j},"g") hold on end end hold off


   Profil
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 2425
  Beitrag No.1, eingetragen 2021-12-21

Hallo Nummi! Zur besseren Darstellung des Quelltextes kann man folgendes nehmen (unter dem Beitrag sichtbar): "\sourceon nameDerSprache" "\sourceoff" Du kannst Deinen Beitrag auch editieren. Viele Grüße Ronald


   Profil
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 2425
  Beitrag No.2, eingetragen 2021-12-21

Ein Schleifen-Beispiel: \sourceon Matlab for i = 5:5:30 i end \sourceoff liefert: i = 5 i = 10 i = 15 i = 20 i = 25 i = 30


   Profil
Nummi hat die Antworten auf ihre/seine Frage gesehen.

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]