背景介绍
在很久之前使用MATLAB画的图,只剩下.fig格式的图像文件,绘图的源代码找不到了,或者需要进行大量的计算才能得到相关的结果,这个时候掌握一种从MATLAB中获取绘图数据的方法就显得非常重要了。
从fig文件中获取数据(通用方法)
首先打开XX.fig文件,在MATLAB中显示绘图,例如下图中的正弦:
运行如下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并不是对所有绘图都生效的,例如如下二维绘图:
运行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对象中包含正确数据的属性或成员名。