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