Чтобы преобразовать 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. Для получения дополнительной информации см. раздел Выполнение автономной диаграммы.