Задайте постоянную переменную
persistent var1 ... varN
объявляет переменные var1 ... varN
как стойкий. Постоянные переменные локальны по отношению к функции, в которой они объявлены, но их значения сохраняются в памяти между вызовами функции. Код в MATLAB® командная строка и в других функциях не могут изменять постоянные переменные.
Когда MATLAB впервые встречается с конкретным persistent
оператор инициализирует постоянную переменную в пустую матрицу ([]
).
MATLAB очищает постоянные переменные, когда вы очищаете или изменяете функцию, которая находится в памяти. Чтобы сохранить функцию в памяти, используйте mlock
.
Постоянные переменные аналогичны глобальным переменным, потому что MATLAB создает постоянное хранилище для обоих. Они отличаются от глобальных переменных, потому что постоянные переменные известны только функции, которая объявляет их. Поэтому код в командной строке MATLAB или других функциях не может изменять постоянные переменные.
Поскольку MATLAB инициализирует постоянную переменную в пустую матрицу ([]
), обычно функции проверяют, является ли постоянная переменная пустой, и, если да, инициализируют ее.
function myFun() persistent n if isempty(n) n = 0; end n = n+1; end
Объявление переменной как постоянной должно предшествовать любым другим ссылкам на переменную, включая входные или выходные аргументы. Для примера, persistent
объявления в следующих функциях недопустимы.
function myfunA(x) persistent x end function myfunB x = 0; persistent x end
Чтобы удалить постоянную переменную, используйте clear
с именем функции, которая объявляет переменную. Для примера, clear myFun
.