Персистентная переменная является локальной переменной в функции MATLAB®, которая сохраняет ее значение в памяти между вызовами функции. Для генерации кода функции должны инициализировать персистентную переменную, если это пусто. Для получения дополнительной информации смотрите persistent.
При программировании функций MATLAB в этих ситуациях:
MATLAB Function blocks без прямого сквозного соединения
Function blocks MATLAB в моделях, которые содержат блоки State Control в Synchronous режим
Функции MATLAB в Stateflow charts (Stateflow), которые реализуют семантику машины Мура
Специализированная семантика влияет, как функция инициализирует свои персистентные данные. Поскольку инициализация должна быть независима от входа к функции, следовать этим инструкциям:
Функция инициализирует свои персистентные переменные только путем доступа к константам.
Поток управления функции не зависит от того, происходит ли инициализация.
Например, эта функция имеет персистентную переменную n.
function y = fcn(u) persistent n if isempty(n) n = u; y = 1; return end y = n; n = n + u; end
n зависит от входа u и return оператор прерывает нормальный поток управления функции.Чтобы откорректировать ошибку, инициализируйте персистентную переменную путем установки его на постоянное значение и удалите return оператор. Например, эта функция инициализирует персистентную переменную, не производя ошибку.
function y = fcn(u) persistent n if isempty(n) n = 1; end y = n; n = n + u; end
Эта модель содержит блок MATLAB function, который задает функциональный fcn, описанный ранее. Вход u прямоугольная волна со значениями 1 и-1.

В блоке MATLAB function:
Начальное значение персистентной переменной n зависит от входа u.
return оператор прерывает нормальный поток управления функции.
Поскольку Позволение прямого проходного флажка очищено, результаты инициализации по ошибке.
Если вы изменяете функцию, таким образом, она инициализирует n независимо от входа затем можно симулировать безошибочную модель.

Эта модель содержит блок MATLAB function, который задает функциональный fcn, описанный ранее. Вход u прямоугольная волна со значениями 1 и-1.

В блоке MATLAB function:
Начальное значение персистентной переменной n зависит от входа u.
return оператор прерывает нормальный поток управления функции.
Поскольку модель содержит блок State Control в Synchronous режим, инициализация приводит к ошибке.
Если вы изменяете функцию, таким образом, она инициализирует n независимо от входа затем можно симулировать безошибочную модель.

Эта модель содержит диаграмму Stateflow, которая реализует семантику машины Мура. График содержит функцию MATLAB, которая задает функциональный fcn, описанный ранее. Вход u имеет значения 1 и-1, которые зависят от состояния графика.

В функции MATLAB:
Начальное значение персистентной переменной n зависит от входа u.
return оператор прерывает нормальный поток управления функции.
Поскольку график реализует семантику Мура, результаты инициализации по ошибке.
Если вы изменяете функцию, таким образом, она инициализирует n независимо от входа затем можно симулировать безошибочную модель.

MATLAB Function | persistent | State Control | Chart (Stateflow)