Определение постоянной переменной
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.