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