У меня есть большой объем данных для импорта в MATLAB, представляющих расположение точек в декартовом пространстве. Что из следующего является наиболее распространенным для хранения и обработки стандартных данных XYZ?:
ВАРИАНТ 1
Храните координаты X, Y и Z как отдельные векторы n * 1 (возможно, внутри структуры?). Это делает:
- График простой:
plot3(X, Y, Z)
- Извлечение отдельных точек немного сложнее
N = [X(i), Y(i), Z(i)]
- Передача всего набора точек функции увеличивает количество передаваемых аргументов.
ВАРИАНТ 2
Храните координаты X, Y и Z как один вектор n * 3.
- Рисовать немного сложнее:
plot3(XYZ(:, 1), XYZ(:, 2), XYZ(:, 3))
- Извлекать отдельные точки стало проще:
N = XYZ(i, :)
- Пройти весь набор точек легко - всего одна переменная
Исходя из этого, я подозреваю, что второй является более традиционным.
Однако некоторые данные, которые я буду обрабатывать, сложнее, так как они считываются в форме сетки, где важен формат сетки. Под этим я подразумеваю, что необработанная форма данных представляет собой матрицу n * m * 3, а не матрицу (n * m) * 3. Важен тот факт, что точка X(i, j) находится рядом с точкой X(i, j+1). Опять же, два варианта представлены:
ВАРИАНТ 1
Сохраните каждую координату X, Y и Z в виде матрицы n * m.
ВАРИАНТ 2
Сохраните все точки в виде матрицы n * m * 3.
Я бы предпочел сделать второй здесь, но некоторые варианты, такие как построение графика, становятся довольно глупыми:
X = XYZ(:, :, 1);
Y = XYZ(:, :, 2);
Z = XYZ(:, :, 3);
plot3(X(:), Y(:), Z(:));
У меня есть ощущение, что для этого должно быть соглашение, особенно в сообществе графического зрения и графики.