Определить значение "gcf" в matlab - PullRequest
6 голосов
/ 26 мая 2011

Глупый, простой вопрос - всегда ли значение gcf в matlab будет номером активной фигуры? То есть, если я работаю над рисунком 5, gcf всегда будет возвращать 5?

Ответы [ 3 ]

8 голосов
/ 26 мая 2011

GCF возвращает дескриптор "текущей цифры".Это всегда номер фигуры активной фигуры.Однако, если вы нажмете на другую фигуру в то же время, эта другая фигура станет активной.Таким образом, если вы уже знаете, с какой цифрой вы работаете, потому что вы либо принудительно задали дескриптор 5, вызвав figure(5), либо потому, что вы захватили дескриптор в переменной, вызвав fh=figure;, безопаснее использовать дескриптор.вместо gcf всякий раз, когда вы хотите изменить фигуру, чтобы избежать риска непреднамеренной активации другой фигуры.

Также, если в данный момент нет открытой фигуры, gcf откроет новую фигуру.

5 голосов
/ 26 мая 2011

Это немного сложнее, чем простой ответ "да" или "нет". Дескриптор для текущей фигуры будет , как правило, соответствовать номеру, отображаемому в верхнем левом углу окна фигуры, но это число отображается только тогда, когда * 'NumberTitle' свойство фигуры * Для 1007 * установлено значение 'on' (по умолчанию).

Еще одна проблема заключается в том, что дескриптор рисунка не обязательно является целым числом. Существует 'IntegerHandle' свойство рисунка , которое определяет, является ли дескриптор, созданный для рисунка, целым числом или вещественным числом многократного использования. Если для этого свойства установлено значение 'off', вы получите значения дескриптора, которые не являются целыми числами, поэтому первый открытый вами символ не будет иметь дескриптор 1. Например:

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

hFigure =

  173.0040

И цифра соответственно нумеруется:

enter image description here

Обратите внимание, что при отображении номера фигуры и ручки происходит округление числа. Окно рисунка отображает только 6 цифр после запятой. Становится очевидным, что вы имеете дело с числами с плавающей запятой, когда вы изменяете формат командного окна , чтобы показать больше десятичных разрядов:

>> format long
>> hFigure

hFigure =

    1.730040283203125e+002

В этом случае отображаемый номер фигуры и ручка рисунка немного отличаются.

3 голосов
/ 26 мая 2011

Да, gcf вернет дескриптор текущей выбранной (или активной) фигуры. Из документации

H = GCF возвращает дескриптор текущей фигуры. Электрический ток рисунок это окно, в котором графические команды, такие как PLOT, Название, SURF и т. Д. Будет рисовать.

Но также помните, что:

Текущая цифра не обязательно является самой передней цифрой на экран.

Один из способов сделать фигуру «текущей»:

Нажатие на uimenus и uicontrols, содержащиеся в фигуре, или щелкнув мышью на области рисования фигуры, цифра станет актуальной.

Другой способ - использовать ручку фигуры. то есть, если вы назвали цифру h=figure;, то figure(h) сделает ее текущей цифрой.

...