Matlab如何提取fig文件中的数据
Matlab如何提取fig文件中的数据
- 1. 原理
- 2. 函数
- 3. 例程演示
- 例1:提取单坐标轴单曲线二维图原始数据
- 例2:提取单坐标轴双曲线二维图原始数据(横坐标相同)
- 例3:提取单坐标轴双曲线二维图原始数据(横坐标维数相同,但数值不同)
- 例4:提取单坐标轴双曲线二维图原始数据(横坐标维数不同)
- 例5:提取双坐标轴多曲线二维图原始数据
- 例6:提取多子图曲线二维图原始数据
- 例7:提取双纵坐标轴曲线二维图原始数据
- 例8:提取单坐标轴曲线三维图原始数据
- 例9:提取单坐标轴曲线三维曲面图原始数据
- 例10:提取原始数据,并将原始数据保存为xls文件(指定文件名)
- 例11:提取原始数据,并将原始数据保存为xls文件(不指定文件名)
- 例12:提取原始数据,并将原始数据保存为xls文件(使用默认文件名)
- 联系作者
1. 原理
有时候运行的程序只保存了fig文件,而没有保存原始数据,当需要对fig文件中的数据进行分析和处理时就会犯难了。本文详细介绍Matlab如何提取fig文件中的数据,并提供原创的m函数,可方便实现各类figure图形提取数据。
fig文件作为Matlab中的图形文件,其实原始数据是会存储在figure对象中的,那么通过get函数获取figure对象中相应的数据属性,就可以得到fig图形中的数据。
例如现在有一个保存的图形:
第一步:打开fig文件;
第二步:获取line句柄
ha = get(gcf,'Children'); % 获取当前的图形的子对象:Axes坐标轴对象
hl = get(ga,'Children') % 获取坐标轴的子对象:Line对象
第三步:获取line对象的xdata、yadata属性
xdata = get(hl,'XData');
ydata = get(hl,'YData');
结果:
hl = Line - 属性:Color: [0 0.4470 0.7410]LineStyle: '-'LineWidth: 0.5000Marker: 'none'MarkerSize: 6MarkerFaceColor: 'none'XData: [1×500 double]YData: [1×500 double]ZData: [1×0 double]
读取的数据:
可以看出绘制曲线的原始数据保存在line对象中,而line对象是axes的子对象,axes是figure的子对象。获取原始数据的思路是:先找出figure对象的所有axes子对象,再找出每个坐标轴的所有line子对象,最后获取每条line的XData、YData、ZData属性,得到原始数据。
2. 函数
可是,当figure图形中的坐标轴很多或线条很多,或者需要对大量figure图形进行批量处理时,上面的方法就很繁琐,不便于操作。为此作者开发了函数Fun_GetFigData.m,可以方便的提取各种类型figure图形文件的原始数据。
function [XYZdata,Str] = Fun_GetFigData( hf,filename )
% XYZdata = Fun_GetFigData( hf ) 获取figure图的
% Str表头字符串
% hf Figure图形句柄 或 Figure文件名(必须带扩展名.fig)
% XYZdata 坐标数组
% filename 保存为xls文件的名称,不输入或输入0时不保存xls文件
% 输入非零数值时,保存成xls文件,文件名与figure文件名相同
% 输入filename时按照输入的字符串保存成xls文件
% 注意filename不带扩展名.xls
% Str 为与XYZdata一一对应的字符串cell数组,用于说明每列数据的表头,在保存为xls文件时保存为表头
% 文件调用规则,请打开下面例子
% open Test_Fun_GetFigData
3. 例程演示
例1:提取单坐标轴单曲线二维图原始数据
t = linspace(0,10,500);
y = sin(t);
hf = figure;
plot(t,y)
XYZdata = Fun_GetFigData( hf );
结果:
返回值 XYZdata = [Xdata Ydata],第一列为X轴坐标数据,第二列为Y轴坐标数据。
例2:提取单坐标轴双曲线二维图原始数据(横坐标相同)
t = linspace(0,10,500);
y1 = sin(t);
y2 = cos(t);
hf = figure;
plot(t,y1,t,y2)
XYZdata = Fun_GetFigData( hf );
结果:
返回值 XYZdata = [Xdata Ydata1 Ydata2],第一列为X轴坐标数据,第二列为曲线1的Y轴坐标数据,第三列为曲线2的Y轴坐标数据。
例3:提取单坐标轴双曲线二维图原始数据(横坐标维数相同,但数值不同)
t1 = linspace(0,10,500);
y1 = sin(t1);
t2 = linspace(-10,0,500);
y2 = cos(t2);
hf = figure;
plot(t1,y1,t2,y2)
XYZdata = Fun_GetFigData( hf );
结果:
返回值 XYZdata = [Xdata1 Ydata1 Xdata2 Ydata2],第一列为曲线1的X轴坐标数据,第二列为曲线1的Y轴坐标数据,第三列为曲线2的X轴坐标数据,第四列为曲线2的Y轴坐标数据。
例4:提取单坐标轴双曲线二维图原始数据(横坐标维数不同)
t1 = linspace(0,10,500);
y1 = sin(t1);
t2 = linspace(-10,0,200);
y2 = cos(t2);
hf = figure;
plot(t1,y1,t2,y2)
XYZdata = Fun_GetFigData( hf );
结果:
XYZdata =1×2 cell 数组{200×2 double} {500×2 double}
返回值为1×2维cell数组,XYZdata{1,1} = [坐标轴1、曲线1的数据],XYZdata{1,2} = [坐标轴1、曲线1的数据]。
例5:提取双坐标轴多曲线二维图原始数据
t1 = linspace(0,10,500);
y1 = sin(t1);
t2 = linspace(-10,0,200);
y2 = cos(t2);
hf = figure;
plot(t1,y1,t2,y2)
XYZdata = Fun_GetFigData( hf );
结果:
XYZdata =2×1 cell 数组{500×3 double}{500×2 double}
返回值为2×1维cell数组,XYZdata{1,1} = [坐标轴1的数据],XYZdata{2,1} = [坐标轴2的数据]。
例6:提取多子图曲线二维图原始数据
t = linspace(0,10,500);
y1 = sin(t);
y2 = cos(t);
y3 = tan(t);
y4 = cot(t);
hf = figure;
subplot(221)
plot(t,y1)
subplot(222)
plot(t,y2)
subplot(223)
plot(t,y3)
subplot(224)
plot(t,y4)
XYZdata = Fun_GetFigData( hf );
结果:
XYZdata =4×1 cell 数组{500×2 double}{500×2 double}{500×2 double}{500×2 double}
返回值为4×1维cell数组,XYZdata{1,1} = [坐标轴1的数据],XYZdata{2,1} = [坐标轴2的数据] ,XYZdata{3,1} = [坐标轴3的数据],XYZdata{4,1} = [坐标轴4的数据]。
例7:提取双纵坐标轴曲线二维图原始数据
t = linspace(0,10,500);
y1 = sin(t);
y2 = cos(t);
hf = figure;
plotyy(t,y1,t,y2)
XYZdata = Fun_GetFigData( hf );
结果:
XYZdata =2×1 cell 数组{500×2 double}{500×2 double}
返回值为2×1维cell数组,XYZdata{1,1} = [坐标轴1的数据],XYZdata{2,1} = [坐标轴2的数据]。
例8:提取单坐标轴曲线三维图原始数据
t = linspace(0,10,500);
y = sin(t);
z = cos(t);
hf = figure;
plot3(t,y,z)
XYZdata = Fun_GetFigData( hf );
结果:
返回值 XYZdata = [Xdata Ydata Zdata],第一列为X轴坐标数据,第二列为Y轴坐标数据,第三列为Z轴坐标数据。
例9:提取单坐标轴曲线三维曲面图原始数据
[X,Y] = meshgrid(1:0.5:10,1:20);
Z = sin(X) + cos(Y);
hf = figure;
surf(X,Y,Z);
XYZdata = Fun_GetFigData( hf );
结果:
返回值 XYZdata = [Xdata Ydata Zdata],第一列为X轴坐标数据,第二列为Y轴坐标数据,第三列为Z轴坐标数据。
例10:提取原始数据,并将原始数据保存为xls文件(指定文件名)
t = linspace(0,10,500);
y1 = sin(t);
y2 = cos(t);
hf = figure;
plotyy(t,y1,t,y2)
XYZdata = Fun_GetFigData( hf,'双坐标轴数据' ); % 指定文件名
结果:
按照指定文件名保存“双坐标轴数据.xls”文件,每个坐标轴单独存成一个工作表(sheet),曲线存储在该坐标轴所对应的工作表中。
例11:提取原始数据,并将原始数据保存为xls文件(不指定文件名)
x = linspace(-2*pi,2*pi);
y = linspace(0,4*pi);
[X,Y] = meshgrid(x,y);
Z = sin(X)+cos(Y);
figure
contour(X,Y,Z);
saveas(gcf,'等高线图'); % 保存当前figure为'等高线图.fig'
XYZdata = Fun_GetFigData( '等高线图.fig',1 );
结果:
按照与fig文件相同的文件名保存“等高线图.xls”文件,数据存储在该坐标轴所对应的工作表中。
例12:提取原始数据,并将原始数据保存为xls文件(使用默认文件名)
t1 = linspace(0,10,500);
y1 = sin(t1);
t2 = linspace(-10,0,200);
y2 = cos(t2);
hf = figure;
subplot(211)
plot(t1,y1,t2,y2)
subplot(212)
plot(t1,10*y1)
XYZdata = Fun_GetFigData( hf,1 );
结果:
XYZdata =2×2 cell 数组{500×2 double} { 0×0 double}{200×2 double} {500×2 double}
返回值XYZdata为2×2维cell数组,XYZdata{ii,jj} = [坐标轴ii、曲线jj的数据]。按照与默认文件名保存“图形数据.xls”文件,每个坐标轴中的每条曲线都单独存成一个工作表(sheet),数据存储在对应的工作表中。
联系作者
有Matlab/Simulink方面的技术问题,欢迎发送邮件至944077462@qq.com讨论。
更多Matlab/Simulink原创资料,欢迎关注微信公众号:Matlab Fans
源程序下载:
1. csdn资源: Matlab如何提取fig文件中的数据
2. 扫码关注微信公众号Matlab Fans,回复BK05获取百度网盘下载链接。
Matlab如何提取fig文件中的数据相关推荐
- MATLAB之从fig文件中提取数据
1 如果你的fig文件中的图像每个像素都有数据,可以通过以下方式获得图像每个点的值,输出data是矩阵,大小是图像像素的行列数 open('figname.fig'); h=get(gca,'Chil ...
- matlab怎么从fig恢复原数据,从Matlab .fig文件中读取数据,并重新绘图
Matlab提供了强大的函数集合,可以从.fig文件中读取图中的数据,并重新绘制图形.如果原始数据丢失,我们可以从.fig文件中恢复原始数据,并基于原始数据做进一步的处理. 以下是一个从两个不同文件中 ...
- 从Matlab .fig文件中读取数据,并重新绘图
Matlab提供了强大的函数集合,可以从.fig文件中读取图中的数据,并重新绘制图形.如果原始数据丢失,我们可以从.fig文件中恢复原始数据,并基于原始数据做进一步的处理. 以下是一个从两个不同文件中 ...
- 从fig文件中读取数据
1 如果你的fig文件中的图像每个像素都有数据,可以通过以下方式获得图像每个点的值,输出data是矩阵,大小是图像像素的行列数 open('figname.fig'); h=get(gca,'Chil ...
- matlab如何读取excel文件中的数据?_Python自动化之从Excel文件读取数据
前言: 在Python语言,常用的excel读写库有xrld和openpyxl两个,当然pandas库也可以从excel文件中读取数据,但这里不建议使用.有个问题就是,xrld只能用于读取数据而不能用 ...
- 如何从Matlab的fig文件中把数据导出来?
1.在命令行运行figure打开一个空白窗口, 2.在工具栏或者菜单中选择open打开你保存的fig文件,会显示出原来的那个图来. 3.在命令行运行obj = get(gca,'children') ...
- 使用Python提取txt文件中的数据到excel中
详情 最近在做服务组合的一些研究,从作者那获取到了QWS数据集,因此需要对数据集进行处理,获取到数据集的数据,保存在excel文件中.QWS数据集包含2000多条数据,每条数据之间的数值采用" ...
- python有什么库可以 从fig文件中读取数据_Python之matplotlib库学习:实现数据可视化...
1. 安装和文档 pip install matplotlib 为了方便显示图像,还使用了ipython qtconsole方便显示.具体怎么弄网上搜一下就很多教程了. pyplot模块是提供操作ma ...
- matlab引用表格命令,如何用matlab引用excel表格数据-matlab如何从excel表格中读取数据?...
怎样利用matlab去读取一个excel表中多个sheet的数... Matlab如何导入excel数据的方法如下: 1.一xlsread()函数,比import简单的多,具体语句: A = xlsr ...
- matlab出如何从fig中获取数据,如何从MATLAB的fig文件中提取原始数据?
如何从MATLAB的fig文件中提取原始数据? mip版 关注:171 答案:3 悬赏:70 解决时间 2021-02-23 07:29 已解决 2021-02-23 02:41 如何从MATL ...
最新文章
- 技术天地 | CSS-in-JS:一个充满争议的技术方案
- 用友互联网战略的变与不变
- zend studio 9实用快捷键大全 分享ZEND STUDIO 9的常用快捷键,高亮显示相同变量。...
- C++ —— C++数据类型
- 轻量级的jQuery表单校验插件: Happy.js
- 微信小程序盲盒系统源码 带教程
- 【论文笔记】(FGSM公式推导)Explaining and Harnessing Adversarial Examples
- C语言学习-小甲鱼(第一天随堂笔记)
- [小技巧1]Word或WPS文献引用、交叉引用方括号编号
- 东南大学计算机系分数,2017最新东南大学专业排名及分数线
- 【C++】C++11 新特性
- JAVA定时任务的创建方式
- 爬取软科中国最好大学排名
- CornerNet代码学习之pytorch多线程
- 心脏骤停患者数据统计系统
- Android RSA加密解密,用于和服务器交互时的请求
- Java实验3 第十一题:游戏:双骰儿赌博
- kdj指标主要看哪个值_看懂KDJ其实没那么难,一文为你详解KDJ指标使用技巧!
- 你是个年轻人,请你好好生活
- BF算法与KMP算法详解
热门文章
- Erueka状态变更说明(十三)
- 【图神经网络】蛋白质设计proteinsolver跑源码记录
- python 爬取贝壳网小区名称_利用python爬取贝壳网租房信息,python爬虫接单网, 最近准备换房子,...
- 2019腾讯广告算法大赛
- 人工智能、大数据、云计算概念
- 最小二乘法的原理讲解
- 小学生可以学java编程吗_小学生学编程都要学习哪些内容 家长们知道吗
- NOI(OJ)编程基础篇
- 你真的理解什么是“财富自由”吗?
- 解决问题:Parameter 0 of method modifyRequestBodyGatewayFilterFactory inorg.springframework.cloud.gateway