Используйте векторы и матрицы когда это необходимо к:
Процесс многомерные сигналы ввода и вывода
Объединение разделяет скалярные данные на один сигнал
Для примеров смотрите, Находят Шаблоны в Передаче данных при помощи Векторов и Вычисляют Движение при помощи Матриц.
Можно задать векторы и матрицы на этих уровнях иерархии Stateflow®:
Графики
Подграфики
Состояния
Функции
Можно использовать векторы и матрицы, чтобы задать:
Входные данные
Выходные данные
Локальные данные
Входные параметры функции
Функциональные выходные параметры
Можно также использовать векторы и матрицы в качестве аргументов для:
Акты государственной власти
Действия перехода
Функции MATLAB®
Функции таблицы истинности
Графические функции
Функции Simulink®
Измените операторы обнаружения
Для получения дополнительной информации смотрите Поддерживаемые Операции для Векторов и Матриц и Правил для Векторов и Матриц в диаграммах Stateflow.
Эти правила применяются, когда вы используете векторы и матрицы в диаграммах Stateflow.
Используйте только операнды равных размерностей для поэлементных операций
Не задавайте векторы и матрицы с ml базовым типом
Используйте только вещественные числа, чтобы установить начальные значения векторов и матриц
Не используйте векторы и матрицы с временными логическими операторами
В диаграмме Stateflow операторы умножения и операторы деления выполняют поэлементное умножение и деление. Используйте функцию MATLAB, чтобы выполнить стандартное умножение матриц и деление.
Например, предположите, что вы хотите выполнить стандартные операции над матрицей на двух квадратных матрицах во время симуляции. Выполните эти шаги:
В вашем графике добавьте функцию MATLAB со следующей подписью:
[y1, y2, y3] = my_matrix_ops(u1, u2)
Дважды кликните функциональное поле, чтобы открыть редактор.
В редакторе введите код ниже.
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
.
Установите свойства для входных и выходных данных.
Откройте Model Explorer.
В панели Model Hierarchy перейдите к уровню функции MATLAB.
В панели Contents, свойствах набора для каждого объекта данных.
Чтобы инициализировать матрицу, смотрите, Задают Матрицу.
Когда вы индексируете вектор, можно использовать оператор temporalCount
, чтобы избегать использования дополнительной переменной для индексного счетчика. Этот метод индексирования работает на векторы, которые содержат действительные или комплексные данные.
Например, предположите, что вы хотите собрать входные данные в буфере во время симуляции. Выполните эти шаги:
Добавьте это состояние в свою диаграмму Stateflow.
Collect_Data
состояния хранит данные в векторном y
, который имеет размер 10
. Действие entry
присваивает значение входных данных u
к первому элементу y
. Действие during
присваивает следующие девять значений входных данных к последовательным элементам векторного y
, пока вы не храните десять элементов.
Добавьте входные данные u
в график.
В редакторе Stateflow выберите Chart> Add Inputs & Outputs> Data Input From Simulink.
В диалоговом окне Свойств данных введите u
в поле Name.
Нажмите OK.
Добавьте выходные данные y
в график.
В редакторе Stateflow выберите Chart> Add Inputs & Outputs> Data Output To Simulink.
В диалоговом окне Свойств данных введите y
в поле Name.
Введите 10
в поле Size.
Нажмите OK.
Вы не должны устанавливать начальные значения для этого выходного вектора. По умолчанию все элементы инициализируют к 0.
Для получения информации об операторе temporalCount
смотрите Выполнение Диаграммы управления при помощи Временной Логики.