Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我有大量数据要导入到MATLAB中,以表示笛卡尔空间中点的位置。以下哪项是用于存储和处理标准XYZ数据的最常规方法?
选项1 将X,Y和Z坐标存储为单独的n * 1个向量(可能在结构中?)。这使得:
将X,Y和Z坐标存储为一个n * 3向量。
但是,我要处理的某些数据更难,因为它们以网格形式读取,而网格的格式很重要。这样,我的意思是数据的原始格式是* 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与您合作,以您的工作方式,您喜欢的思维方式工作。 更多&回答... |
![]() |
![]() |