Векторы и матрицы в диаграммах Stateflow

Когда использовать векторы и матрицы

Используйте векторы и матрицы когда это необходимо к:

  • Процесс многомерные сигналы ввода и вывода

  • Объединение разделяет скалярные данные на один сигнал

Для примеров смотрите, Находят Шаблоны в Передаче данных при помощи Векторов и Вычисляют Движение при помощи Матриц.

Где можно использовать векторы и матрицы

Можно задать векторы и матрицы на этих уровнях иерархии Stateflow®:

  • Графики

  • Подграфики

  • Состояния

  • Функции

Можно использовать векторы и матрицы, чтобы задать:

  • Входные данные

  • Выходные данные

  • Локальные данные

  • Входные параметры функции

  • Функциональные выходные параметры

Можно также использовать векторы и матрицы в качестве аргументов для:

  • Акты государственной власти

  • Действия перехода

  • Функции MATLAB®

  • Функции таблицы истинности

  • Графические функции

  • Функции Simulink®

  • Измените операторы обнаружения

Для получения дополнительной информации смотрите Поддерживаемые Операции для Векторов и Матриц и Правил для Векторов и Матриц в диаграммах Stateflow.

Правила для векторов и матрицы в диаграммах Stateflow

Эти правила применяются, когда вы используете векторы и матрицы в диаграммах Stateflow.

 Используйте только операнды равных размерностей для поэлементных операций

 Не задавайте векторы и матрицы с ml базовым типом

 Используйте только вещественные числа, чтобы установить начальные значения векторов и матриц

 Не используйте векторы и матрицы с временными логическими операторами

Лучшые практики для векторов и матриц в диаграммах Stateflow

Выполните умножение матриц и деление Используя функции MATLAB

В диаграмме Stateflow операторы умножения и операторы деления выполняют поэлементное умножение и деление. Используйте функцию MATLAB, чтобы выполнить стандартное умножение матриц и деление.

Например, предположите, что вы хотите выполнить стандартные операции над матрицей на двух квадратных матрицах во время симуляции. Выполните эти шаги:

  1. В вашем графике добавьте функцию MATLAB со следующей подписью:

    [y1, y2, y3] = my_matrix_ops(u1, u2)

  2. Дважды кликните функциональное поле, чтобы открыть редактор.

  3. В редакторе введите код ниже.

    function [y1, y2, y3] = my_matrix_ops(u1, u2)
    %#codegen
    
    y1 = u1 * u2;  % matrix multiplication
    y2 = u1 \ u2;  % matrix division from the right
    y3 = u1 / u2;  % matrix division from the left

    Эта функция вычисляет три значения:

    • y1 является продуктом двух входных матриц u1 и u2.

    • y2 является матрицей, которая решает уравнение u1 * y2 = u2.

    • y3 является матрицей, которая решает уравнение y3 * u1 = u2.

  4. Установите свойства для входных и выходных данных.

    1. Откройте Model Explorer.

    2. В панели Model Hierarchy перейдите к уровню функции MATLAB.

    3. В панели Contents, свойствах набора для каждого объекта данных.

    Примечание

    Чтобы инициализировать матрицу, смотрите, Задают Матрицу.

Индексируйте Вектор Используя temporalCount Оператор

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

Например, предположите, что вы хотите собрать входные данные в буфере во время симуляции. Выполните эти шаги:

  1. Добавьте это состояние в свою диаграмму Stateflow.

    Collect_Data состояния хранит данные в векторном y, который имеет размер 10. Действие entry присваивает значение входных данных u к первому элементу y. Действие during присваивает следующие девять значений входных данных к последовательным элементам векторного y, пока вы не храните десять элементов.

  2. Добавьте входные данные u в график.

    1. В редакторе Stateflow выберите Chart> Add Inputs & Outputs> Data Input From Simulink.

    2. В диалоговом окне Свойств данных введите u в поле Name.

    3. Нажмите OK.

  3. Добавьте выходные данные y в график.

    1. В редакторе Stateflow выберите Chart> Add Inputs & Outputs> Data Output To Simulink.

    2. В диалоговом окне Свойств данных введите y в поле Name.

    3. Введите 10 в поле Size.

    4. Нажмите OK.

    Примечание

    Вы не должны устанавливать начальные значения для этого выходного вектора. По умолчанию все элементы инициализируют к 0.

Для получения информации об операторе temporalCount смотрите Выполнение Диаграммы управления при помощи Временной Логики.

Похожие темы