Matlab从Figure中提取原始数据

**第一种方法:**转载:https://blog.csdn.net/yangziluomu/article/details/39520771

1 如果你的fig文件中的图像每个像素都有数据,可以通过以下方式获得图像每个点的值,输出data是矩阵,大小是图像像素的行列数

open('figname.fig');
h=get(gca,'Children');
data=get(h,'Cdata');

2 如果你的fig文件中 图像是由单条曲线绘制而成,比如说plot命令生成的,通过以下方式输出横坐标,纵坐标的取值

open('figname.fig');
h_line=get(gca,'Children');%get linehandles
xdata=get(h_line,'Xdata');
ydata=get(h_line,'Ydata');

3 如果你的fig文件中 图像是由三维单条曲线绘制而成,比如说plot3命令生成的,通过以下方式输出x,y,z 坐标的取值

open('figname.fig');
h_line=get(gca,'Children');%get linehandles
xdata=get(h_line,'Xdata');
ydata=get(h_line,'Ydata');
zdata=get(h_line,'Zdata');

4 如果你的fig文件中 图像是由多条曲线绘制而成,比如说plot命令生成的,通过以下方式输出横坐标,纵坐标的取值

open('figname.fig');
lh = findall(gca, 'type', 'line');% 如果图中有多条曲线,lh为一个数组
xc = get(lh, 'xdata');            % 取出x轴数据,xc是一个元胞数组
yc = get(lh, 'ydata');            % 取出y轴数据,yc是一个元胞数组
%如果想取得第2条曲线的x,y坐标
x2=xc{2};
y2=yc{2};

**第二种方法:**转载:https://blog.csdn.net/victor8370/article/details/99760899
这种方法比较万能,任何数据形式都可以!

1、在命令行运行figure打开一个空白窗口,
2、在工具栏或者菜单中选择open打开你保存的fig文件,会显示出原来的那个图来。
3、在命令行运行obj = get(gca,‘children’)
这个结果对应你的图里面的线或者面的句柄,有几条线就对应几个句柄。
4、根据你需要的是哪条线,第n条线句柄就是obj(n),如果只有一个对象直接用obj就可以,
然后再用一次get,
x=get(obj(1), ‘xdata’);
y=get(obj(1), ‘ydata’);
如果是三维图,再加上个z=get(obj(1),‘zdata’);
x、y、z就是你所需要的坐标数据

你可能感兴趣的:(Matlab从Figure中提取原始数据)