Преобразуйте код MATLAB в Stateflow Flow Графиков

Чтобы преобразовать MATLAB® код в Stateflow® flow графиков и графические функции, используйте Pattern Wizard. Поддерживаемые шаблоны для преобразования включают:

  • if, if-else, и другие вложенные операторы принятия решений.

  • for и while циклы.

  • switch операторы.

Этот Pattern Wizard может преобразовывать функции MATLAB и скрипты.

  • Функции MATLAB преобразуются в графические функции Stateflow.

  • Скрипты MATLAB преобразуются в графики потока Stateflow.

Преобразование кода MATLAB поддерживается только в автономных диаграммах Stateflow. Для получения дополнительной информации смотрите Создание диаграмм Stateflow для выполнения в качестве объектов MATLAB.

Создайте Графики потока из скриптов 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 оператор, выход которого зависит от четности входа.

Чтобы преобразовать этот скрипт в график потока и графическую функцию:

  1. Откройте новую автономную диаграмму.

    edit hailstone.sfx
  2. На вкладке State Chart выберите Pattern > Select File.

  3. В диалоговом окне выберите скрипт MATLAB и нажатия кнопки Open. Этот Pattern Wizard добавляет графика потока операций и графическую функцию к диаграмме Stateflow. Дважды кликните графическую функцию, чтобы увидеть ее содержимое.

  4. На панели «Символы» нажмите кнопку Resolve Undefined Symbols. Редактор Stateflow разрешает u и y как локальные данные.

  5. Сохраните график.

  6. Чтобы выполнить график из редактора 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
    
  7. Нажмите Stop.

Можно скопировать сгенерированные графики потока и графические функции и вставить их в другие графики, включая диаграммы Stateflow в Simulink® модели. Если ваш код MATLAB использует функциональность, которая ограничена для генерации кода в Simulink, необходимо изменить действия графика потока перед симуляцией графика. Для получения дополнительной информации смотрите Вызов внешних функций MATLAB в диаграммах Stateflow.

Примечание

Предположим, что вы используете nargin в функции MATLAB, которую вы преобразуете в графическую функцию на графике. Потому что nargin считает график объекта как один из входных параметров графической функции, значение nargin в графической функции равно единице плюс значение nargin в исходной функции MATLAB. Для получения дополнительной информации см. раздел Выполнение автономной диаграммы.

Похожие темы