Постоянная переменная - это локальная переменная в функции MATLAB ®, которая сохраняет свое значение в памяти между вызовами функции. Для создания кода функции должны инициализировать постоянную переменную, если она пуста. Дополнительные сведения см. в разделеpersistent.
При программировании функций MATLAB в следующих ситуациях:
Функциональные блоки MATLAB без прямого прохождения
MATLAB Функциональные блоки в моделях, которые содержат блоки управления состоянием в 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, определяющий функцию. fcn, описанного ранее. Вход u является квадратной волной со значениями 1 и -1.

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

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

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

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

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

Диаграмма | persistent | Государственный контроль (Кодер HDL) | Функция MATLAB (Simulink)