Персистентная переменная является локальной переменной в функции MATLAB®, которая сохраняет ее значение в памяти между вызовами функции. Для генерации кода функции должны инициализировать персистентную переменную, если это пусто. Для получения дополнительной информации смотрите persistent.
При программировании функций MATLAB в этих ситуациях:
Блоки MATLAB function без прямого сквозного соединения
Блоки MATLAB function в моделях, которые содержат блоки Госконтроля в режиме Synchronous
Функции MATLAB в диаграммах 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 прерывает нормальный поток управления функции.
Поскольку флажок Allow direct feeedthrough снимается, результаты инициализации по ошибке.
Если вы изменяете функцию, таким образом, она инициализирует 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 | Госконтроль | persistent