从 matlab .fig 中提取曲面

Extract surface from matlab .fig

我有一个 matlab .fig 文件,其中包含一些点和适合它们的曲面。我想从图中提取表面,我想要顶点和面。您能否提供一些有关如何实现此目标的提示?

我的图可以在这里找到:https://drive.google.com/file/d/0By376R0mxORYU3JsRWw1WjllWHc/view?usp=sharing 我想提取没有蓝点的表面。

编辑:它不是重复的,请参阅下面我的评论以了解原因。

用于绘制表面和点的数据存储在图中。

因此您可以:

  • 开图
  • 从图中获取数据
  • 获取图形的子项,在本例中为轴
  • 从表面的轴、X、y 和 z 数据中提取

坐标轴实际包含两组数据:

  • z(1)中存储的点的数据XData,YData,ZData
  • z(2)中存储的surface数据XData,YData,ZData

这是代码("dot notation"):

% Open the figure
open('cubicinterp.fig')
% Get the data from the figure
x=gcf
% Get the children of the figure (in this case the axes)
y=x.Children
% Get the data used to plot on the axes
z=y.Children

figure
XX=z(2).XData;
YY=z(2).YData;
ZZ=z(2).ZData;
CCDD=z(2).CData;
surf(XX,YY,ZZ,CCDD)
return

这是没有 "dot notation" 的代码(R2014b 之前)

% Open the figure
open('cubicinterp.fig')
% Get the data from the figure
x=gcf
% Get the children of the figure (in this case the axes)
y_1=get(gcf,'children');
% Get the data used to plot on the axes
z_1=get(y_1,'children');

figure
XX=get(z_1(2),'xdata');
YY=get(z_1(2),'ydata');
ZZ=get(z_1(2),'zdata');
CCDD=get(z_1(2),'Cdata');
surf(XX,YY,ZZ,CCDD)

这是提取的表面:

希望这对您有所帮助。

Qapla'