Spec-Zone.ru › Octave 8

7.3 Состояние переменных

При создании простых одноразовых программ очень удобно видеть, какие переменные доступны в командной строке. Функция who и её аналоги whos и whos_line_format покажут различную информацию о том, что находится в памяти, как показано ниже.

str = "A random string";
who
 -| Variables in the current scope:
 -|
 -| ans  str
: who ¶
: who шаблон … ¶
: who опция шаблон … ¶
: C = who (…) ¶

Выводит список определённых переменных, соответствующих заданным шаблонам.

Синтаксис шаблонов такой же, как описано для команды clear. Если шаблоны не указаны, выводятся все переменные.

По умолчанию отображаются только переменные, видимые в локальной области видимости.

Следующие опции допустимы, но их нельзя комбинировать.

global

Выводит переменные из глобальной области видимости вместо текущей.

-regexp

Шаблоны рассматриваются как регулярные выражения при сопоставлении с переменными для отображения. Используется тот же синтаксис шаблонов, что и в функции regexp.

-file

Следующий аргумент обрабатывается как имя файла. Выводятся все переменные, найденные в указанном файле. При чтении переменных из файла шаблоны не принимаются.

Если вызвана как функция, возвращает массив ячеек имен определённых переменных, соответствующих заданным шаблонам.

См. также: whos, isglobal, isvarname, exist, regexp.

: whos ¶
: whos шаблон … ¶
: whos опция шаблон … ¶
: S = whos ("шаблон", …) ¶

Предоставляет подробную информацию о текущих переменных, соответствующих заданным шаблонам.

Опции и синтаксис шаблонов такие же, как для команды who.

Расширенная информация о каждой переменной суммируется в таблице с следующими полями по умолчанию.

Атрибут

Атрибуты указанной переменной. Возможные атрибуты:

blank

Переменная в локальной области видимости

c

Переменная комплексного типа.

f

Формальный параметр (аргумент функции).

g

Переменная с глобальной областью видимости.

p

Постоянная переменная.

Имя

Имя переменной.

Размер

Логический размер переменной. Скаляр — 1x1, вектор — 1xN или Nx1, 2-мерная матрица — MxN.

Байты

Объём памяти, используемый для хранения переменной.

Класс

Класс переменной. Примеры: double, single, char, uint16, cell, struct.

Таблицу можно настроить для отображения больше или меньше информации с помощью функции whos_line_format.

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

См. также: who, whos_line_format.

: val = whos_line_format () ¶
: old_val = whos_line_format (new_val) ¶
: old_val = whos_line_format (new_val, "local") ¶

Запрос или установка формата строки, используемой командой whos.

Полная строка формата:

%[modifier]<command>[:width[:left-min[:balance]]];

Доступны следующие последовательности команд:

%a

Выводит атрибуты переменных (c=комплексная, s=разреженная, f=формальный параметр, g=глобальная, p=постоянная).

%b

Выводит количество байтов, занимаемых переменными.

%c

Выводит имена классов переменных.

%e

Выводит элементы, содержащиеся в переменных.

%n

Выводит имена переменных.

%s

Выводит размеры переменных.

%t

Выводит имена типов переменных.

Для каждой команды также доступен модификатор выравнивания:

l

Левое выравнивание.

r

Правое выравнивание (по умолчанию).

c

Выравнивание по столбцам (применимо только к команде %s).

Параметр width — положительное целое число, указывающее минимальное количество столбцов для печати. Максимальное значение не требуется, так как поле будет автоматически расширяться по мере необходимости.

Параметры left-min и balance доступны только при использовании модификатора выравнивания по столбцам с командой ‘%s’. balance указывает номер столбца в ширине поля, который будет выровнен между записями. Нумерация начинается с 0, что обозначает самый левый столбец. left-min указывает минимальную ширину поля слева от указанного столбца выравнивания.

Формат по умолчанию:

"  %la:5; %ln:6; %cs:16:6:1;  %rb:12;  %lc:-1;\n"

При вызове из функции с опцией "local", значение переменной меняется локально для функции и всех вызываемых ею подпрограмм. Исходное значение переменной восстанавливается при выходе из функции.

См. также: whos.

Вместо отображения переменных в памяти, можно определить, доступна ли заданная переменная. Это позволяет изменять поведение программы в зависимости от наличия переменной. Следующий пример иллюстрирует это.

if (! exist ("meaning", "var"))
  disp ("The program has no 'meaning'");
endif
: c = exist (name) ¶
: c = exist (name, type) ¶

Проверяет наличие name как переменной, функции, файла, каталога или класса.

Код возврата c — один из:

1

name — переменная.

2

name — абсолютный путь к файлу, обычный файл в системе Octave, или (после добавления ‘.m’) файл функции в системе Octave.

3

name — файл ‘.oct’ или ‘.mex’ в системе Octave.

5

name — встроенная функция.

7

name — каталог.

8

name — класс classdef.

103

name — функция, не связанная с файлом (введена в командной строке).

0

name не существует.

Если необязательный аргумент type указан, то проверка выполняется только для символов указанного типа. Допустимые типы:

"var"

Проверка только для переменных.

"builtin"

Проверка только для встроенных функций.

"dir"

Проверка только для каталогов.

"file"

Проверка только для файлов и каталогов.

"class"

Проверка только для классов classdef.

Если тип не задан и для имени существует несколько возможных совпадений, exist вернёт код в соответствии со следующей приоритетной списком: переменная, встроенная функция, oct-файл, каталог, файл, класс.

exist возвращает 2, если в пути поиска Octave присутствует обычный файл с именем name. Для получения информации о других типах файлов, не находящихся в пути поиска, используйте комбинацию функций file_in_path и stat.

Примечание для программистов: если файл .oct/.mex, реализующий name, имеет ошибку, вызов exist может привести к сбою Octave. Чтобы сохранить высокую производительность, Octave доверяет файлам .oct/.mex вместо их изоляции.

См. также: file_in_loadpath, file_in_path, dir_in_loadpath, stat.

Обычно Octave управляет памятью, но иногда бывает удобно удалять переменные вручную. Это обычно необходимо при работе с большими переменными, которые занимают значительную часть памяти. На компьютере, использующем формат с плавающей запятой IEEE, следующая программа выделяет матрицу, которая требует около 128 МБ памяти.

large_matrix = zeros (4000, 4000);

Поскольку наличие этой переменной в памяти может замедлить другие вычисления, может потребоваться удалить ее вручную из памяти. Для этого используются функции clear или clearvars.

: clear ¶
: clear pattern … ¶
: clear options pattern … ¶

Удалить имена, соответствующие заданным patternам, тем самым освободив память.

Шаблон pattern может содержать следующие специальные символы:

?

Соответствует любому одиночному символу.

*

Соответствует нулю или более символам.

[ list ]

Соответствует списку символов, указанных в list. Если первый символ — ! или ^, соответствуют все символы, кроме тех, которые указаны в list. Например, шаблон [a-zA-Z] соответствует всем строчным и прописным буквам алфавита.

Например, команда

clear foo b*r

очищает имя foo и все имена, начинающиеся с буквы 'b' и заканчивающиеся буквой 'r'.

Если clear вызывается без аргументов, все пользовательские переменные очищаются из текущего рабочего пространства (т. е. локальные переменные). Любые присутствующие глобальные переменные больше не будут видны в текущем рабочем пространстве, но они продолжат существовать в глобальном рабочем пространстве. Функции не затрагиваются этим видом clear.

Следующие параметры доступны в длинной и короткой формах

all, -all, -a

Очистить все локальные и глобальные пользовательские переменные и все функции из таблицы символов.

-exclusive, -x

Очистить переменные, которые не соответствуют указанному шаблону.

functions, -functions, -f

Очистить имена функций из таблицы символов функций. Постоянные переменные будут переинициализированы до своего значения по умолчанию, если функция не была заблокирована в памяти с помощью mlock.

global, -global, -g

Очистить имена глобальных переменных.

variables, -variables, -v

Очистить имена локальных переменных.

classes, -classes, -c

Очистить таблицу структуры классов и все объекты.

-regexp, -r

Аргументы pattern обрабатываются как регулярные выражения, и любые совпадения будут удалены.

За исключением -exclusive и -regexp, все длинные параметры могут использоваться и без тире. Обратите внимание, что помимо -exclusive, может появиться только один другой параметр. Все параметры должны предшествовать любым шаблонам.

Примечания к программированию: команда clear name очищает переменную name только тогда, когда одновременно определены как переменная, так и (затененная) функция с именем name. Например, предположим, что вы определили функцию foo, а затем скрыли ее, выполнив присваивание foo = 2. Выполнение команды clear foo один раз очистит определение переменной и восстановит определение foo как функции. Выполнение clear foo во второй раз очистит определение функции.

Когда локальное имя переменной, связанное с глобальной переменной, очищается, удаляется только локальная копия переменной. Глобальная копия остается нетронутой и может быть восстановлена с помощью global global_varname. И наоборот, clear -g global_varname удалит как локальные, так и глобальные переменные.

См. также: clearvars, who, whos, exist, mlock.

: clearvars ¶
: clearvars pattern … ¶
: clearvars -regexp pattern … ¶
: clearvars … -except pattern … ¶
: clearvars … -except -regexp pattern … ¶
: clearvars -global … ¶

Удалить переменные, соответствующие заданным patternам, из памяти.

Шаблон pattern может содержать следующие специальные символы:

?

Соответствует любому одиночному символу.

*

Соответствует нулю или более символам.

[ list ]

Соответствует списку символов, указанных в list. Если первый символ — ! или ^, соответствуют все символы, кроме тех, которые указаны в list. Например, шаблон [a-zA-Z] соответствует всем строчным и прописным буквам алфавита.

Если параметр -regexp задан, последующие шаблоны обрабатываются как регулярные выражения, и любые совпадения будут удалены.

Если параметр -except задан, последующие шаблоны выбирают переменные, которые не будут удалены.

Если параметр -global задан, все шаблоны будут применяться к глобальным переменным, а не к локальным.

При вызове без аргументов, clearvars удаляет все локальные переменные.

Пример кода:

Очистить все переменные, начинающиеся с 'x' и конкретную переменную "foobar"

clearvars x* foobar

Очистить конкретную переменную "foobar" и использовать регулярные выражения для очистки всех переменных, начинающихся с 'x' или 'y'.

clearvars foobar -regexp ^x ^y

Очистить все переменные, кроме "foobar"

clearvars -except foobar

Очистить все переменные, начинающиеся с "foo", за исключением тех, которые заканчиваются на "bar"

clearvars foo* -except -regexp bar$

См. также: clear, who, whos, exist.

: pack () ¶

Консолидировать память рабочего пространства в MATLAB.

Эта функция предоставлена для совместимости, но в Octave ничего не делает.

См. также: clear.

Информация о функции или переменной, такой как ее расположение в файловой системе, также может быть получена из Octave. Это обычно полезно только во время разработки программ, а не в рамках программы.

: type name … ¶
: type -q name … ¶
: text = type ("name", …) ¶

Отобразить содержимое name, которое может быть файлом, функцией (m-файлом), переменной, оператором или ключевым словом.

type обычно предваряет строку заголовка, описывающую категорию name, такую как функция или переменная; параметр -q подавляет это поведение.

Если переменная вывода не используется, содержимое отображается на экране. В противном случае возвращается массива строк, где каждый элемент соответствует содержимому каждой запрошенной функции.

: which name … ¶

Отобразить тип каждого name.

Если name определено из файла функции, отображается также полное имя файла.

См. также: help, lookfor.

END_OF_DOCUMENT_MARKER
: what ¶
: what dir ¶
: w = what (dir) ¶

Перечислите файлы, специфичные для Octave, в каталоге dir.

Если dir не указан, используется текущий каталог.

Если требуется возвращаемое значение, найденные файлы возвращаются в структуре w. Структура содержит следующие поля:

path

Полный путь к каталогу dir

m

Массив ячеек m-файлов

mat

Массив ячеек mat-файлов

mex

Массив ячеек mex-файлов

oct

Массив ячеек oct-файлов

mdl

Массив ячеек mdl-файлов

slx

Массив ячеек slx-файлов

p

Массив ячеек p-файлов

classes

Массив ячеек каталогов классов (@classname/)

packages

Массив ячеек каталогов пакетов (+pkgname/)

Примечание по совместимости: Octave не поддерживает mdl-, slx- и p-файлы. what всегда будет возвращать пустой список для этих категорий.

См. также: which, ls, exist.

© 1996–2023 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v8.1.0/Status-of-Variables.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API