MATLAB中fig文件多重图片数据读取

matlab中,常用"figure,plot()"绘图观察结果,fig图片的保存也很方便,再次用matlab打开之后,可以很方便的使用matlab工具继续观察和分析图中数据。理论上,fig图片中的数据,是存在的,可以被去读出来,如果这个过程比较方便的话,fig文件可以作为一种保存数据结果的方便的方式。

参考了matlab fig文件的操作_小木匠的博客-CSDN博客

中的操作,确实可以读取出数据,但是,对于一个figure中,包含多个图表的情况,这套方法存在一些问题,一般只能读取到一个图表。如下图所示:MATLAB中fig文件多重图片数据读取_第1张图片

这个图包含上下两部分, 但是套用文中【4】的操作,只能得到图中下面三条曲线的数据,上面图标中的数据无法获得。

具体代码如下:

open('aaa.fig');%aaa.fig为图片的文件名

lh = findall(gca, 'type', 'line')

xc = get(lh, 'xdata'); 

yc = get(lh, 'ydata'); 

执行后观察,可以看到,lh和xc、yc,都只有三个元素。

本人参考matlab的语言习惯,进行了修改和尝试,找到了正确的方法,代码如下:

figfile=open('aaa.fig');

lh = findall(figfile, 'type', 'line')

xc = get(lh, 'xdata'); 

yc = get(lh, 'ydata');

此时观察工作区,可以看到,lh和xc、yc,都是6个元素。经过实际测试,其中确实包含了图中所示的6条曲线数据,顺序是从下到上。这样就实现了对fig文件中数据的读取。

将其写成函数figread(),代码如下:

function [x,y]=figread(name1)
%本程序用于读取fig文件的数据,一般默认为plot生成的数据,包含多条曲线
%1,读取图片,获得图片句柄
a=open(name1);

%2,从图片中获取曲线信息
b=findall(a,'type','line');
x=get(b,'Xdata');
y=get(b,'Ydata');

%3,关闭图片
close(a);
end

本文结束。

你可能感兴趣的:(MATLAB,matlab,图像处理)