User interface 在Matlab绘图中获取对象的位置

User interface 在Matlab绘图中获取对象的位置,user-interface,matlab,plot,matlab-figure,User Interface,Matlab,Plot,Matlab Figure,如何直接从Matlab命令窗口获取我在绘图上绘制的对象(如箭头、矩形或sim)的位置(即坐标)?通常可以使用句柄图形属性进行此操作。例如: findobj(gcf); %Returns all non-hidden, typical objects. This should be your first attempt. findall(gcf); %Returns all children, even hidden object, such as titles, manually adde

如何直接从Matlab命令窗口获取我在绘图上绘制的对象(如箭头、矩形或sim)的位置(即坐标)?

通常可以使用句柄图形属性进行此操作。例如:

findobj(gcf);  %Returns all non-hidden, typical objects.  This should be your first attempt.
findall(gcf);  %Returns all children, even hidden object, such as titles, manually added annotations, and UI menus
密谋

h = plot(1:10, rand(10,1)); 
然后得到点的实际值 x=get(h,'xdata') y=get(h,'ydata')

不同类型的对象具有不同的属性,有时您必须进行探索。在这种情况下,此语法非常有用

get(h)  %This displays all available properties on `h` to the command window
最后一个有用的小贴士是
gco
(“获取当前对象”)函数,它提供打印或手动单击的最后一项的句柄。如果您不确定打印的项目来自何处,这可能会有所帮助


编辑:

要查找对象的所有派生属性,请使用
findobj
findall
。例如:

findobj(gcf);  %Returns all non-hidden, typical objects.  This should be your first attempt.
findall(gcf);  %Returns all children, even hidden object, such as titles, manually added annotations, and UI menus
此调用将删除一些常见的UI注释

get(findall(gcf,'-not','type','uimenu','-not','type','uitoggletool','-not','type','uipushtool','-not','type','uitogglesplittool'),'type')

(可能最后一个例子可以通过设计合理的regexp进行改进,但我现在似乎无法让它正常工作。)

谢谢!你的回答很有用。使用命令“gco”、“get”和“set”,我可以控制我在绘图上放置的最后一个对象的属性。我还需要一件事:如何列出绘图上的所有对象?
findobj(gcf)
提供当前图形的所有子体的句柄。
findobj
对于此类工作非常有用,它还可以根据属性值(或其逻辑组合)过滤列表
help findobj
了解更多信息。不幸的是,这是我的示例。我创建了一个简单的绘图t=0.25:3*pi;y=0.9*sin(t)。*(t);绘图(t,y);然后我只添加了一条直线和一个矩形。如果我选择其中一条,请使用命令“gco”我得到了相应的句柄,因此我可以访问它的所有属性。另一方面,使用findobj(gcf)我得到了三个句柄,但与前面的句柄没有对应关系。请参见编辑。答案是
findall
(我刚刚了解)你说得对!解决方案是
findall
,过滤所有不同句柄的表达式非常简单…
findall(gcf,'type','hggroup'))
此命令只提供放置在绘图上的对象的所有句柄,因此线、箭头、重角等。现在我需要知道,当绘图是GUI的一部分时,如何修改此命令。非常感谢您的帮助!