MATLAB 提取fig文件中数据的通用方法

背景介绍

在很久之前使用MATLAB画的图,只剩下.fig格式的图像文件,绘图的源代码找不到了,或者需要进行大量的计算才能得到相关的结果,这个时候掌握一种从MATLAB中获取绘图数据的方法就显得非常重要了。
在这里插入图片描述

从fig文件中获取数据(通用方法)

首先打开XX.fig文件,在MATLAB中显示绘图,例如下图中的正弦:
MATLAB 提取fig文件中数据的通用方法_第1张图片
运行如下MATLAB代码:

obj = get(gca,'children')

得到当前图像的对象(有多图的时候注意将目标图放在最前),结果如下:

>>>
obj = 

  Line - 属性:

              Color: [0 0.4470 0.7410]
          LineStyle: '-'
          LineWidth: 0.5000
             Marker: 'none'
         MarkerSize: 6
    MarkerFaceColor: 'none'
              XData: [1×100 double]
              YData: [1×100 double]
              ZData: [1×0 double]

  显示 所有属性

可以看出,在获取图像对象后,MATLAB列出了对象的成员和属性,其中XData,YData,ZData三个属性就是你想要的数据。
通过

XData=obj.XData;
YData=obj.YData;
ZData=obj.ZData;

当然XData,YData,ZData并不是对所有绘图都生效的,例如如下二维绘图:
MATLAB 提取fig文件中数据的通用方法_第2张图片

运行obj = get(gca,'children')代码,得到的结果如下,其中obj.CData是上述二维图像的二维数据。

obj = 

  Image - 属性:

           CData: [10×1000 double]
    CDataMapping: 'scaled'

  显示 所有属性

可见fig图像对象的成员或属性是随着图像类型的不同而变化的,但其原始数据必定包含于图像对象的成员或属性中,具体可以通过代码 obj = get(gca,'children')进行查看。

由此可见,提取fig图像数据的通用方法是:

1. 在MATLAB中绘制fig文件的图像;
2. 运行代码 obj = get(gca,'children')
3. 查看 obj 的成员,找出与数据维度相同的变量即为储存数据的量;
4. Data=obj.XX;其中XX为obj对象中包含正确数据的属性或成员名。

你可能感兴趣的:(matlab,matlab)