中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

  • 552查看
  • 0回复

[MATLAB] matlab自动提取保存在figure里面的x和y轴数据(增加了后面漏的代码)

[复制链接]


该用户从未签到

发表于 29-3-2024 10:09:29 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师



昨天文章发出去才发现少了部分代码遗漏了,今天补上

经常有读者咨询fig文件里面的x和y轴的数据如何提取,故分享总结一下这个基础方法,在一些场景下面,对方不会把源代码提供,只会提供一个figure来做交互和结果查看,这时候如果想重新绘制figure增加内容,就需要提取figure图的数据,

1、保存一个figure文件

clearclcclose all
x = 0:0.1:10;y = sin(x);figureplot(x,y)saveas(gcf,'y.fig');
matlab自动提取保存在figure里面的x和y轴数据(增加了后面漏的代码)w1.jpg

fig文件作为Matlab中的图形文件,其实原始数据是会存储在figure对象中的,那么通过get函数获取figure对象中相应的数据属性,就可以得到fig图形中的数据。

2、提取figure数据的步骤
提取fig文件数据的方法为:

    第一步:打开图形(.fig)文件
open("y.fig")

    第二步:获取曲线(line)句柄;
hl = get(gca,'Children');    % 获取坐标轴的子对象:Line对象ha = get(gcf,'Children');  % 获取当前的图形的子对象:Axes坐标轴对象
    第三步:获取line对象的xdata、yadata属性;xdata = get(hl,'XData');ydata = get(hl,'YData');结果:

matlab自动提取保存在figure里面的x和y轴数据(增加了后面漏的代码)w2.jpg

matlab自动提取保存在figure里面的x和y轴数据(增加了后面漏的代码)w3.jpg

可以看出绘制曲线的原始数据保存在line对象中,而line对象是axes的子对象,axes是figure的子对象。获取fig文件原始数据的思路是:先找出figure对象的所有axes子对象,再找出每个坐标轴的所有line子对象,最后获取每条line的XData、YData、ZData属性,得到原始数据。

这个时候数据就在xdata和ydata,可以进行二次绘图。

3、针对特殊情况的处理

3.1 subplot的figure

x = 0:0.1:10;y = sin(x);y2 = cos(x)figuresubplot(211)plot(x,y)subplot(212)plot(x,y2)saveas(gcf,'yy2.fig');

matlab自动提取保存在figure里面的x和y轴数据(增加了后面漏的代码)w4.jpg

clearclcclose allopen("yy2.fig")
figure_info=findall(gcf,'type','line');
xc1=get(figure_info(1,:),'xdata');yc1=get(figure_info(1,:),'ydata');  xc2=get(figure_info(2,:),'xdata');  yc2=get(figure_info(2,:),'ydata') ;
subplot的就需要做遍历,同时做好数据的对应,对应哪个subplot

3.2 三维图

%% clearclcclose all
x = 0:0.1:10;y = sin(x);y2 = cos(x)
figureplot3(x,y,y2)saveas(gcf,'xyy2.fig');
matlab自动提取保存在figure里面的x和y轴数据(增加了后面漏的代码)w5.jpg

open("xyy2.fig") % h = figure
hl = get(gca,'Children')    % 获取坐标轴的子对象:Line对象ha = get(gcf,'Children');  % 获取当前的图形的子对象:Axes坐标轴对象

xdata = get(hl,'XData');ydata = get(hl,'YData');zdata = get(hl,'ZData');figureplot3(xdata,ydata,zdata)

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 22-12-2024 22:43 , Processed in 0.366058 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.