愚蠢,简单的问题gcf
-matlab中的值是否总是活动图形的数字?即,如果我正在处理图 5,将gcf
始终返回5
?
3 回答
GCF返回“当前图形”的句柄。这始终是活动图形的图形编号。但是,如果您同时单击其他图形,则该其他图形将变为活动状态。因此,如果您已经知道您正在使用什么数字,因为您要么通过调用将句柄强制为 5 figure(5)
,或者因为您通过调用在变量中捕获了句柄fh=figure;
,那么使用句柄而不是gcf
在您想要的任何时候使用会更安全修改图形以避免无意中激活另一个图形的风险。
此外,如果当前没有打开图,gcf
将打开一个新图。
这比简单的“是”或“否”答案要复杂一些。当前图形 的句柄一般会匹配图形窗口左上角显示的数字,但是这个数字只有在'NumberTitle'
图形属性设置为'on'
(默认)时才会显示。
另一个问题是图形句柄不能保证是整数。有一个'IntegerHandle'
图形属性确定为图形创建的句柄是整数还是不可重用的实数。如果此属性设置为'off'
,您将获得非整数的句柄值,因此您打开的第一个图窗的句柄不会为 1。例如:
>> hFigure = figure('IntegerHandle','off') %# The only window open
hFigure =
173.0040
该图相应编号:
请注意,当显示图形编号和句柄时,数字会有一些四舍五入。图形窗口仅显示小数点后 6 位。当您更改命令行窗口的格式以显示更多小数位时,很明显您正在处理浮点数:
>> format long
>> hFigure
hFigure =
1.730040283203125e+002
在这种情况下,显示的图形编号和图形手柄略有不同。
是的,gcf
将返回当前选定(或活动)图形的句柄。从文档中,
H = GCF 返回当前图形的句柄。当前图形是 PLOT、TITLE、SURF 等图形命令将在其中绘制的窗口。
但也要记住:
当前人物不一定是屏幕上最前面的人物。
使图形“当前”的一种方法是:
单击图形中包含的 uimenus 和 uicontrols,或单击图形的绘图区域会导致该图形变为当前图形。
另一种方法是使用图形手柄。即,如果您将图形称为h=figure;
,figure(h)
则将使其成为当前图形。