在matlab中确定"gcf"的值

eyk*_*nal 6 matlab matlab-figure

愚蠢的,简单的问题 - gcf在matlab中的价值总是成为活跃人物的数字?即,如果我正在研究图5,它将gcf永远返回5

Jon*_*nas 8

GCF返回"当前数字"的句柄.这始终是活动图的图号.但是,如果在此期间单击其他图形,则其他图形将变为活动状态.因此,如果你已经知道你正在使用什么数字,因为你要么通过调用强制句柄为5 figure(5),要么因为你通过调用fh=figure;它来捕获变量中的句柄更安全,你使用句柄而不是gcf你想要的时候修改图形以避免冒险无意中使另一个数字处于活动状态.

此外,如果当前没有图形打开,gcf将打开一个新的数字.


gno*_*ice 5

这比简单的"是"或"否"答案稍微复杂一些.对于手柄目前的数字 大致匹配的身影窗口的左上角显示的数字,但是当仅显示该号码'NumberTitle'图属性设置为'on'(默认值).

另一个问题是数字句柄不能保证是整数.有一个'IntegerHandle'figure属性,用于确定为该图创建的句柄是整数还是不可重用的实数.如果将此属性设置为'off',则会获得非整数的句柄值,因此您打开的第一个数字将不具有1的句柄.例如:

>> hFigure = figure('IntegerHandle','off')  %# The only window open

hFigure =

  173.0040
Run Code Online (Sandbox Code Playgroud)

并且数字相应地编号:

在此输入图像描述

请注意,当显示图号和句柄时,会有一些数字的四舍五入.图形窗口仅显示小数点后6位数.很明显,当您更改命令窗口的格式以显示更多小数位时,您正在处理浮点数:

>> format long
>> hFigure

hFigure =

    1.730040283203125e+002
Run Code Online (Sandbox Code Playgroud)

在这种情况下,显示的图号和图形手柄略有不同.

  • 你有一点意见.尽管生成句柄的算法非常具有确定性,并且跨会话的处理可以是相同的,但在会话中它不会被回收. (3认同)
  • @yoda:我的猜测是,它有助于将您的数字与用户可能做的任何事情隔离开来.例如,如果你创建一个图形句柄为1的GUI,并且用户在GUI打开时运行一些其他代码,那就像`set(1,...);`(即他们对其进行硬编码以修改首先打开图,然后他们可能会打破你的GUI.使用非整数句柄使您的GUI图形句柄唯一,并且句柄编号不像整数句柄那样被回收. (2认同)