Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 在MATLAB中存储XYZ数据的最常规方法

我有大量数据要导入到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(:)); 我觉得必须为此达成共识,尤其是在视觉和图形社区。



回答:

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

如果您要进行许多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与您合作,以您的工作方式,您喜欢的思维方式工作。



更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 02:53


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.