|
Autor |
for-Schleife |
|
Nummi
Junior  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  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  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. |
|
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]
|