- 积分
- 149
- 注册时间
- 2003-5-22
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2003-6-25 21:36:11
|
显示全部楼层
来自 新加坡
回复: 【讨论】关于Object句柄的获取
有几个办法。关键在于使用findall,而不是findobj。
如果你只有一条线。也就是在matlab里用figure命令,然后用figure窗口工具栏的Insert line画一条线,那么可以这样获得所画线条的句柄:
-
- hLine = findall(gcf, 'Type', 'Line');
-
复制代码
如果你已经在该figure里画了一些曲线,比如:
-
- x = 0:.01:20;
- y = x.*sin(x);
- hPlot = plot(x, y);
-
复制代码
然后在用Insert line画一条线,那么这时用hLines = findall(gcf, 'Type', 'Line')获得的就是这两条线。那么怎么去区分这两条线呢?有好几种办法:
1. 一般用工具栏手工加上去的线条的句柄的数值比用plot德句柄值大,也就是说上面hLines里比较大的那个数值就是对应于手工添加对象的句柄。但是可能不保险。
2。通常用手工添加的线条的数据点只有两个,即起始点和终止点,而用plot等所画的线条其数据点数目比较多,所以可以通过判断数据点个数来找出手工钱家对象。
-
- numOfPts = length(get(hLines(i), 'Xdata')); % 用循环遍历所有句柄
-
复制代码
3. 既然是手工添加,当然应该明白所添加线条的位置,所以可以通过判断该线条的起始点和终止点的坐标值来判断,这种方法适合于手工添加两条以上的线条。
-
- lineDataX = get(hLines(i), 'XData'); %用循环遍历所有句柄
-
复制代码
4。最佳方法就是:既然是手工添加,那么在添加线条以后,顺手用鼠标双击该线条,在出来的Property窗口,Info标签下面,给这个线条一个Tag,那么在程序里就可以通过这个tag来唯一的确定该对象:
-
- hMyLine = findall(gcf, 'Tag', 'myLine');
-
复制代码
仅供参考。欢迎讨论。
:I |
评分
-
1
查看全部评分
-
|