Чтобы преобразовать MATLAB® код в Stateflow® flow графиков и графические функции, используйте Pattern Wizard. Поддерживаемые шаблоны для преобразования включают:
if
, if-else
, и другие вложенные операторы принятия решений.
for
и while
циклы.
switch
операторы.
Этот Pattern Wizard может преобразовывать функции MATLAB и скрипты.
Функции MATLAB преобразуются в графические функции Stateflow.
Скрипты MATLAB преобразуются в графики потока Stateflow.
Преобразование кода MATLAB поддерживается только в автономных диаграммах Stateflow. Для получения дополнительной информации смотрите Создание диаграмм Stateflow для выполнения в качестве объектов MATLAB.
Этот скрипт MATLAB эмпирически проверяет один образец догадки Collatz. Когда задан численный вход u
скрипт вычисляет последовательность градины n 0 = u
, n 1, n 2, n 3, ⋯ путем итерации этого правила:
Если n i четна, то n i + 1 = n i/2.
Если n i нечетно, то n i + 1 = 3 n i + 1.
Догадка Collatz утверждает, что каждое положительное целое число имеет последовательность градины, которая в конечном счете достигает единицы.
% Hailstone sequence u, c(u), c(c(u)),... y = [u]; while y(end) ~= 1 y(end+1) = c(y(end)); end disp(y); function n = c(n) % Compute next number in hailstone sequence. % If n is even, then c(n) = n/2. % If n is odd, then c(n) = 3*n+1. if rem(n,2) == 0 n = n/2; else n = 3*n+1; end end
while
цикл, который неоднократно вызывает вспомогательную функцию c
пока он не задает выхода единицу. Функция c
состоит из условного if
- else
оператор, выход которого зависит от четности входа.Чтобы преобразовать этот скрипт в график потока и графическую функцию:
Откройте новую автономную диаграмму.
edit hailstone.sfx
На вкладке State Chart выберите Pattern > Select File.
В диалоговом окне выберите скрипт MATLAB и нажатия кнопки Open. Этот Pattern Wizard добавляет графика потока операций и графическую функцию к диаграмме Stateflow. Дважды кликните графическую функцию, чтобы увидеть ее содержимое.
На панели «Символы» нажмите кнопку Resolve Undefined Symbols.
Редактор Stateflow разрешает u и
y
как локальные данные.
Сохраните график.
Чтобы выполнить график из редактора Stateflow, на панели «Символы» введите значение u
= 9 и нажмите Run.
Пока график потока выполняется, Редактор Stateflow подсвечивает активные переходы через график анимацию. Когда выполнение останавливается, в Командном Окне MATLAB отображается последовательность градины, начиная со значения девяти:
9 28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
Нажмите Stop.
Можно скопировать сгенерированные графики потока и графические функции и вставить их в другие графики, включая диаграммы Stateflow в Simulink® модели. Если ваш код MATLAB использует функциональность, которая ограничена для генерации кода в Simulink, необходимо изменить действия графика потока перед симуляцией графика. Для получения дополнительной информации смотрите Вызов внешних функций MATLAB в диаграммах Stateflow.
Примечание
Предположим, что вы используете nargin
в функции MATLAB, которую вы преобразуете в графическую функцию на графике. Потому что nargin
считает график объекта как один из входных параметров графической функции, значение nargin
в графической функции равно единице плюс значение nargin
в исходной функции MATLAB. Для получения дополнительной информации см. раздел Выполнение автономной диаграммы.