Ich habe eine große Menge an Daten in MATLAB zu importieren, die die Lage von Punkten im kartesischen Raum darstellen. Welche der folgenden Optionen ist für die Speicherung und Verarbeitung von Standard-XYZ-Daten am besten geeignet?
OPTION 1
Speichern Sie X-, Y- und Z-Koordinaten als separate n * 1-Vektoren (möglicherweise innerhalb einer Struktur?). Dies macht:
- Einfaches Plotten:
plot3(X, Y, Z)
- Extrahieren einzelner Punkte etwas komplizierter
N = [X(i), Y(i), Z(i)]
- Die Übergabe des gesamten Punktesatzes an eine Funktion erweitert die Anzahl der verschiedenen Argumente, die übergeben werden können.
OPTION #2
Speichern Sie die X-, Y- und Z-Koordinaten als einen n * 3-Vektor.
- Das Plotten ist etwas schwieriger:
plot3(XYZ(:, 1), XYZ(:, 2), XYZ(:, 3))
- Das Extrahieren einzelner Punkte ist einfacher:
N = XYZ(i, :)
- Die Übergabe einer ganzen Reihe von Punkten ist einfach - nur eine Variable
Daher vermute ich, dass die zweite Variante die konventionellere ist.
Einige der von mir zu verarbeitenden Daten sind jedoch schwieriger, da sie in Form von Gittern eingelesen werden, wobei das Format des Gitters wichtig ist. Damit meine ich, dass die Rohform der Daten eine n * m * 3-Matrix ist, anstatt einer (n*m) * 3-Matrix. Die Tatsache, dass der Punkt X(i, j) neben dem Punkt X(i, j+1) liegt, ist wichtig. Auch hier gibt es zwei Möglichkeiten:
OPTION 1
Speichern Sie jede X-, Y- und Z-Koordinate als n * m-Matrix.
OPTION #2
Speichern Sie alle Punkte in einer n * m * 3 Matrix.
Ich würde hier eher die zweite Variante wählen, aber einige Optionen, wie das Plotten, sind ziemlich albern:
X = XYZ(:, :, 1);
Y = XYZ(:, :, 2);
Z = XYZ(:, :, 3);
plot3(X(:), Y(:), Z(:));
Ich habe das Gefühl, dass es dafür eine Konvention geben muss, insbesondere in der Vision- und Grafik-Community.