![]() |
在MATLAB中存储XYZ数据的最常规方法
我有大量数据要导入到MATLAB中,以表示笛卡尔空间中点的位置。以下哪项是用于存储和处理标准XYZ数据的最常规方法?
[B]选项1[/B] 将X,Y和Z坐标存储为单独的n * 1个向量(可能在结构中?)。这使得: [LIST][*]绘制简单: plot3(X, Y, Z)[*]提取单个点稍微复杂些N = [X(i), Y(i), Z(i)][*]将整个点集传递给函数会扩展要传递的不同参数的数量。[/LIST][B]选项#2[/B] 将X,Y和Z坐标存储为一个n * 3向量。 [LIST][*]绘制会稍微困难一些: plot3(XYZ(:, 1), XYZ(:, 2), XYZ(:, 3))[*]提取单个点更容易: N = XYZ(i, :)[*]传递整套点很容易-只需一个变量[/LIST]基于此,我怀疑第二个是更常规的。 但是,我要处理的某些数据更难,因为它们以网格形式读取,而网格的格式很重要。这样,我的意思是数据的原始格式是* m * 3矩阵,而不是(n * m)* 3矩阵。 X(i,j)点紧挨X(i,j + 1)的事实很重要。同样,提供了两种选择: [B]选项1[/B] 将每个X,Y和Z坐标存储为n * m矩阵。 [B]选项#2[/B] 将所有点存储为n * m * 3矩阵。 我宁愿在这里进行第二个操作,但是某些选项(例如绘图)变得非常愚蠢: X = XYZ(:, :, 1); Y = XYZ(:, :, 2); Z = XYZ(:, :, 3); plot3(X(:), Y(:), Z(:)); 我觉得必须为此达成共识,尤其是在视觉和图形社区。 [B]回答:[/B] 我认为没有任何一种真正最好的方法可以做到这一点。最好的方式就是让您的生活最便捷。 如果您要进行许多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与您合作,以您的工作方式,您喜欢的思维方式工作。 [url=https://stackoverflow.com/questions/3694715]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 23:24。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.