exponenta event banner

Преобразование кода MATLAB в блок-схемы потока состояний

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

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

  • for и while петли.

  • switch заявления.

Мастер шаблонов может преобразовывать функции и сценарии MATLAB.

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

  • Сценарии MATLAB преобразуются в блок-схемы Stateflow.

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

Создание блок-схем из сценариев MATLAB

Этот сценарий MATLAB эмпирически проверяет один экземпляр гипотезы Коллаца. Если задан числовой ввод u, сценарий вычисляет последовательность града n0 = u, n1, n2, n3, ⋯ путем итерации этого правила:

  • Если ni является четным, то ni + 1 = ni/2.

  • Если ni нечетный, то ni + 1 = 3ni + 1.

Гипотеза Коллаца утверждает, что каждое положительное целое число имеет последовательность градов, которая в конечном итоге достигает единицы.

% 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. На вкладке Диаграмма состояния выберите Шаблон > Выбрать файл.

  3. В диалоговом окне выберите сценарий MATLAB и нажмите кнопку «Открыть». Мастер шаблонов добавляет блок-схему и графическую функцию в диаграмму Stateflow. Дважды щелкните графическую функцию для просмотра ее содержимого.

  4. На панели Символы (Symbols) щелкните Разрешить неопределенные символы (Resolve Undefined Symbols). Редактор Stateflow разрешает u и y в виде локальных данных.

  5. Сохраните диаграмму.

  6. Чтобы выполнить диаграмму из редактора Stateflow, на панели «Символы» введите значение u = 9 и нажмите «Выполнить». Во время выполнения блок-схемы редактор 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 в диаграммах потока состояний.

Примечание

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

Связанные темы