我有大量数据要导入 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, :)
- 通过整套点很容易 - 只有一个变量
基于此,我怀疑第二个是更传统的。
但是,我要处理的一些数据更难,因为它是以网格形式读取的,其中网格的格式很重要。我的意思是,数据的原始形式是 * 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(:));
我觉得必须为此制定一个约定,尤其是在视觉和图形社区中。