gpt4 book ai didi

matlab - 在 MATLAB 中存储 XYZ 数据的最常规方法

转载 作者:太空宇宙 更新时间:2023-11-03 20:31:52 42 4
gpt4 key购买 nike

我有大量数据要导入 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(:));

我觉得必须为此制定一个约定,尤其是在视觉和图形社区。

最佳答案

我认为没有任何一种真正最好的方法可以做到这一点。最适合您的方式是让您的生活最方便的方式。

如果您要绘制许多 3-d 图并且您更喜欢以一种组合形式携带数据,那么请编写一个 plot3d 小工具。将其设置为采用 nx3 数组(或您喜欢的结构),然后调用 plot3,拆分三列。

% =============================
function h = plot3d(data,varargin)
% plots 3-d data (more help is good here)
h = plot3(data(:,1),data(:,2),data(:,3),varargin{:});
if nargout == 0
clear h
end
% =============================

我会在数据形状上添加一些额外的错误检查,并提供更好的帮助,但您应该了解总体思路。

就个人而言,我喜欢在一个 nx3 数组中携带 3 维数据。对于其他类型的东西,恕我直言,结构是最好的。例如,对我来说,将 delaunay 三角剖分的顶点和分割信息都填充到一个结构中是有意义的。

扩展 matlab 与您一起工作,以您的工作方式、您喜欢的思考方式工作。

关于matlab - 在 MATLAB 中存储 XYZ 数据的最常规方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3694715/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com