【发布时间】:2010-09-12 11:52:05
【问题描述】:
我有大量数据要导入 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(:));
我觉得必须为此制定一个约定,尤其是在视觉和图形社区中。
【问题讨论】:
标签: matlab cartesian point-clouds