找回密码
 注册
Simdroid-非首页
查看: 323|回复: 11

一个简单从fig文件中获取原来的plot数据

  [复制链接]
发表于 2007-1-7 12:34:19 | 显示全部楼层 |阅读模式 来自 安徽合肥
由于解一个较复杂的偏微分方程组,所以设及到很多数据。boss开始用我给的matlab的fig图,现在又要我把具体数据给他。晕了,我当时只保存了fig图片,其他都clear掉,重算太浪费时间了。ok,用datatip and Zoom,搞了一些数据给他,没想到line的handle也有Ydata的属性。忙了半天就这么简单搞定了。

clear
%just need a test datum.
x=linspace(0,2*pi,100);
y=sin(x);
plot(x,y);

%uiopen('..\good.fig',1);
h_a=get(gcf,'Children');
%mybe  U have double axes!
%don't use : h_a=gca;
h_line=get(h_a,'Children');%get line handles

%if U have text objects,try:
get(h_line,'Type');
%ok get your original data!
xdata=get(h_line,'Xdata');
ydata=get(h_line,'Ydata');



I have one question:
if I have a figure file,good.fig and don't open it for gui,how can I get the Ydata or Xdata  of line throught fopen or other funciton?
thanks a lot.

评分

1

查看全部评分

发表于 2007-1-7 12:58:44 | 显示全部楼层 来自 湖北武汉
Simdroid开发平台
赞你的分享和独立解决问题
同时,友情提示
在SMTH搜索
680 m  xxhn Jun 20 [合集] 请问matlab能不能从*.fig文件里面再读回数据?  
855 m  Agenter Aug  3 [合集] 请教GUI两个figure间调用数据问题  
1705 m  swimminglion Dec  1 Re: 如何将matlab中.fig文件的数据读出?  
1829 m  hjjnst Jan 21 Re: 救急:如何从matlab的.fig 文件里面读回数据?  
http://www.newsmth.net/bbsbfind.php?board=MathTools
本版也有,专业的直接提取数据的:D,你瞧瞧下面这个。
http://www.simwe.com/forum/viewthread.php?tid=514421

[ 本帖最后由 shunfly 于 2007-1-7 13:01 编辑 ]

评分

1

查看全部评分

发表于 2007-1-7 13:27:51 | 显示全部楼层 来自 北京
好啊啊,哈哈。。。。。。。。。。。。。。。。。。

评分

1

查看全部评分

发表于 2007-1-7 21:51:39 | 显示全部楼层 来自 北京工业大学
h_a=get(gcf,'Children');这里的'Children'指什莫?我是初学,看不懂你们写的
发表于 2007-1-17 18:05:27 | 显示全部楼层 来自 湖北武汉
真是太感谢了!!!!!!!!!先学习一下,不懂还要请教!
发表于 2007-2-3 14:07:56 | 显示全部楼层 来自 北京
狂顶,这个正好需要,先做个记号,回去好好研究以下,多谢楼主分享
发表于 2007-2-3 16:55:51 | 显示全部楼层 来自 浙江温州
有用的东西,留下脚印!以北以后需要的时候来找一下,多谢阿
发表于 2007-2-3 19:31:20 | 显示全部楼层 来自 陕西西安
楼上的学习精神很好哈,呵呵~ 赞一个~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
发表于 2007-2-5 02:28:43 | 显示全部楼层 来自 河北
楼主这么干,其实首先要知道图形的句柄才行,但是如果不知道句柄怎么办呢?所以首先要用到findobj这个函数。下面我示一下如何应用findobj找到句柄。
%首先画一条曲线,
x=[0:0.01:2*pi];plot(x,sin(x),'o')
这时候就出现了一个图,图中的曲线就是一条0到2π的正弦曲线。
如果这个时候我只有这么一张图的话,首先要知道曲线的句柄才行,这样就需要进行如下操作。
handle=findobj('marker','o') %意思就是找到marker为o的图形的句柄,
得到这个句柄之后,就是把这个句柄下面的内容赋线一个变量了,
temp=get(handle)
这样就得到了一个结构体变量,有各种属性,熟悉这些属性分别代表什么意思对于理解matlab也许会很有帮助。再通过
x=temp.XData;y=temp.YData
就可以得到想要的数据了。当然直接用x=get(h,'XData')效果也是一样的。
如果只是一条曲线,这个时候用findobj的时候就应该这样了。
handle=findobj('linestyle','-')
这句话的意思就是找到linestyle为-的曲线的句柄,不过这个时候往往会得到两个句柄,用get试一下就知道哪个是自己想要的数据了。

[ 本帖最后由 slurry 于 2007-2-5 02:33 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2007-2-5 21:10:36 | 显示全部楼层 来自 湖北武汉
以后用查找句柄,推荐用findall 代替 findobj,
否则有的句柄设置了隐藏属性,就不可能得到该figure下的全部句柄了,当然为了简化编程,也许句柄隐藏也是我们所需要的,具体问题具体分析。

为了得到准确的对象,各种对象的属性都可以用上,比如'linestyle','xdata','color'
当然这些对象要具有区别于其它对象的特征。比如你有两条line,但是lienstyle都是solid line,这样可能就找到两个line了。也可以用颜色等特征却find。

评分

1

查看全部评分

发表于 2007-2-6 19:24:22 | 显示全部楼层 来自 中国
向楼上各位学习...............:)
发表于 2007-2-6 21:06:11 | 显示全部楼层 来自 新疆乌鲁木齐
帖子我锁掉了,原因有二:
1.问题以前被讨论过,找句柄属性、用datacursor按钮都可以
2.也是最让我沮丧的:中间一段儿毫无技术含量的无用灌水太多,有点儿over the top.
技术讨论为主的论坛里,客套式的人情关爱不要随手奉送,太廉价了,不是吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-7 09:24 , Processed in 0.064752 second(s), 23 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表