Задайте персистентную переменную
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
.