В диаграмме Stateflow ® в модели Simulink ® размер объекта данных задается следующим образом:
Установка свойства Size, как описано в разделе Set Data Properties. Дополнительные сведения см. в разделе Размер.
Установка Props.Array.Size через API Stateflow. Дополнительные сведения см. в разделе Stateflow.Data.
Для задания размера используйте один из следующих методов:
Наследовать размер из сигнала Simulink или из его определения в диаграмме Stateflow.
Введите числовое значение.
Введите выражение MATLAB ®.
Поддержка каждого метода определения размеров зависит от объема данных.
| Объем данных | Метод определения размеров данных | ||
|---|---|---|---|
| Наследовать размер | Использовать числовые значения | Использование выражений MATLAB | |
| Местный | Только в диаграммах, использующих MATLAB в качестве языка действий | Да | Да |
| Постоянный | Нет | Да | Да |
| Параметр | Да | Да | Да |
| Вход | Да | Да | Да |
| Продукция | Да | Да | Да |
| Память хранилища данных | Да | Нет | Нет |
Чтобы настроить объект данных Stateflow для наследования его размера из соответствующего сигнала Simulink или его определения в диаграмме, укажите размер –1. После моделирования или построения модели наследуемый размер данных можно найти в обозревателе моделей в столбце Скомпилированный размер.
Примечание
Диаграммы не могут наследовать размеры данных из сигналов на основе кадров Simulink. Дополнительные сведения см. в разделе Концепции на основе образцов и кадров (панель системных инструментов DSP).
При указании размера данных путем ввода числового значения следуйте следующим инструкциям.
Для задания скаляра введите 1 или оставьте поле пустым.
Чтобы указать n-по-1 вектор столбца, введите n.
Задание 1-по-n вектор строки, введите [1 .n]
Чтобы указать nоколо-m матрица, введите [.n
m]
Чтобы указать n-мерный массив, введите [, где d1
d2 ⋯ dn]di - размер i-е измерение.
В диаграммах, использующих C в качестве языка действий, одномерные векторы Stateflow совместимы с векторами строк или столбцов Simulink одинакового размера. Например, входные данные Stateflow размера 3 совместим с вектором строки Simulink размера [1 3] или вектор столбца размера [3 1].
Можно указать размер данных, введя выражение MATLAB, которое вычисляет одну из спецификаций размера, описанных в разделе Задание размера данных с помощью числовых значений. Эти руководящие принципы также применяются:
Выражения могут содержать комбинацию числовых значений, констант, параметров, переменных, арифметических операций и вызовов функций MATLAB.
Выражения, указывающие размер размера, должны вычисляться как положительное целое значение.
Выражения могут объединять только совместимые значения. Например, целые числа могут быть объединены только с другими целыми числами того же типа или со скалярными двойниками.
Если выражение содержит перечисляемое значение, необходимо включить префикс типа для согласованности с правилами именования MATLAB. Например, Colors.Red является действительным, но Red имеет значение not. Дополнительные сведения см. в разделе Нотация для перечисляемых значений.
Нельзя использовать выражение MATLAB для:
Укажите размер наследуемых данных. Не использовать выражения, вычисляющие -1.
Укажите размер входных данных Stateflow, которые принимают данные на основе кадров из Simulink. Дополнительные сведения см. в разделе Концепции на основе образцов и кадров (панель системных инструментов DSP).
Эти примеры являются допустимыми выражениями MATLAB для указания размера данных на диаграмме:
K+3, где K является константой или параметром Stateflow на уровне диаграммы.
N/2, где N является переменной в базовой рабочей области MATLAB.
[P Q], где P и Q - параметры Simulink. Диаграммы, использующие C в качестве языка действий, распространяют эти символьные размеры по всей модели. См. раздел Распространение символьных размеров данных потока состояний.
2*Colors.Red, где Red является перечисляемым значением типа Colors.
size(u), где u является переменной уровня диаграммы. Функция size позволяет указать размер одного объекта данных на основе размера другого объекта данных. Этот тип выражения полезен в библиотечной диаграмме, которая используется повторно с данными разных размеров. В других ситуациях можно улучшить четкость диаграммы, избегая size и определение размера данных напрямую.
floor((a*b)/c), где a и c скаляры типа int16 и b является скаляром типа double.
[fi(2,1,16,2) fi(4,1,16,2)]. Это выражение указывает размер данных [2 4] путем вызова функции fi (Конструктор фиксированных точек). Эта функция возвращает подписанные числа с фиксированной точкой с длиной слова 16 и длиной дроби 2.
Если модель содержит несколько переменных с одинаковыми именами, для задания размера используется переменная с наивысшим приоритетом.
| Приоритет | Переменная |
|---|---|
| 1 | Параметр маски |
| 2 | Переменная рабочего пространства модели |
| 3 | Базовая переменная рабочей области MATLAB |
| 4 | Данные о потоке состояний |
Чтобы избежать путаницы, не указывайте размер данных, используя имя переменной, определяемое на нескольких уровнях модели.
При выборе параметра конфигурации модели Разрешить спецификацию символьных размеров диаграммы, использующие C в качестве языка действий, могут распространять символьные размеры данных Stateflow по всей модели. При использовании Embedded Coder ® символьные размеры входят в созданный код для целей ERT. Укажите размер символьных размеров с помощью параметров Simulink с одним из следующих классов хранения:
Define или ImportedDefine с указанным файлом заголовка
CompilerFlag
Пользовательский пользовательский класс хранения, определяющий данные как макрос в указанном файле заголовка
Дополнительные сведения см. в разделах Разрешение спецификации символьных измерений (Simulink) и Реализация вариантов измерений для размеров массива в сгенерированном коде (Embedded Coder).
Диаграммы потока состояний, использующие MATLAB в качестве языка действий, не поддерживают распространение символьных измерений. Чтобы задать размер данных с помощью параметров Simulink, снимите флажок Разрешить спецификацию символьных размеров (Allow symbolic dimension specification).
size | fi (Конструктор фиксированных точек)