In a Stateflow® график в Simulink® модель, размер объекта данных задается следующим образом:
Установка свойства Size, как описано в Set Data Properties. Для получения дополнительной информации см. Раздел «Размер».
Установка Props.Array.Size
свойство через Stateflow API. Для получения дополнительной информации смотрите Stateflow.Data
.
Используйте один из следующих методов, чтобы задать размер:
Наследовать размер от сигнала Simulink или от его определения на диаграмме Stateflow.
Введите числовое значение.
Введите MATLAB® выражение.
Поддержка каждого метода калибровки зависит от возможностей ваших данных.
Возможности данных | Метод калибровки данных | ||
---|---|---|---|
Наследование размера | Использование числовых значений | Использование выражений MATLAB | |
Местный | Только в графиках, которые используют MATLAB в качестве языка действий | Да | Да |
Постоянный | Нет | Да | Да |
Параметр | Да | Да | Да |
Вход | Да | Да | Да |
Выход | Да | Да | Да |
Память хранилища данных | Да | Нет | Нет |
Чтобы сконфигурировать объект данных Stateflow, чтобы наследовать его размер от соответствующего сигнала Simulink или его определения на графике, задайте размер –1
. После моделирования или создания модели можно найти унаследованный размер данных в Model Explorer под столбцом Compiled Size.
Примечание
Графики не могут наследовать размеры данных от сигналов, основанных на кадрах Simulink. Для получения дополнительной информации смотрите Концепции на основе выборок и фреймов (DSP System Toolbox).
Когда вы задаете размер данных путем ввода числового значения, следуйте следующим рекомендациям:
Чтобы задать скаляр, введите 1
или оставьте поле пустым.
Как задать n
-by-1 вектора-столбца, введите n
.
Чтобы задать 1-байт- n
Вектор-строку введите [1
.n
]
Как задать n
-by- m
матрица, введите [
.n
m
]
Как задать n
-мерный массив, введите [
, где d1
d2
⋯ dn
]di
- размер i
th размерность.
В графики, которые используют C в качестве языка действий, одномерные векторы Stateflow совместимы с строкой Simulink или векторами-столбцами того же размера. Для примера, входные данные Stateflow размера 3
совместим с вектором-строкой Simulink размера [1 3]
или вектор-столбец размера [3 1]
.
Можно задать размер данных путем ввода выражения MATLAB, которое вычисляет один из спецификаций размера, описанных в разделе Задать размер данных при помощи числовых значений. Эти руководящие принципы также применяются:
Выражения могут содержать смесь числовых значений, констант, параметров, переменных, арифметических операций и вызовов функций MATLAB.
Выражения, которые задают размер размерности, должны вычисляться положительным целым значением.
Выражения могут комбинировать только совместимые значения. Например, целые числа могут быть объединены только с другими целыми числами того же типа или со скалярными двойными числами.
Если выражение содержит перечисленное значение, необходимо включить префикс типа для согласованности с правилами именования MATLAB. Для примера, Colors.Red
действителен, но Red
is not. Для получения дополнительной информации смотрите Обозначение для перечисленных значений.
Вы не можете использовать выражение MATLAB для:
Задайте размер унаследованных данных. Не используйте выражения, которые вычисляются как -1
.
Задайте размер входных данных Stateflow, которые принимают данные на основе фрейма от Simulink. Для получения дополнительной информации смотрите Концепции на основе выборок и фреймов (DSP System Toolbox).
Эти примеры являются допустимыми выражениями MATLAB для определения размера данных на графике:
K+3
, где K
является константой или параметром Stateflow на уровне диаграммы.
N/2
, где N
- переменная в базовом рабочем пространстве MATLAB.
[P Q]
, где P
и Q
являются параметрами Simulink. Графики, которые используют C в качестве языка действий, распространяют эти символические размерности по всей модели. См. «Распространение символьных размерностей данных Stateflow».
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
(Fixed-Point Designer). Эта функция возвращает подписанные числа с фиксированной точкой с размером слова 16 и длиной дроби 2.
Когда модель содержит несколько переменных с одинаковыми именами, переменная с наивысшим приоритетом используется для задания размера.
Приоритет | Переменная |
---|---|
1 | Параметр Маска |
2 | Моделируйте переменную рабочей области |
3 | Переменная базового рабочего пространства MATLAB |
4 | Данные Stateflow |
Чтобы избежать путаницы, не задавайте размер данных с помощью имени переменной, которое вы задаете на нескольких уровнях вашей модели.
Когда вы выбираете Allow symbolic dimension specification параметра конфигурации модели, графиков, которые используют C в качестве языка действий, могут распространить символические размерности данных Stateflow по всей модели. Если у вас есть Embedded Coder®символические размерности переходят в сгенерированный код для ERT-целей. Задайте размер символических размерностей при помощи параметров Simulink с одним из следующих классов памяти:
Define
или ImportedDefine
с заданным файлом заголовка
CompilerFlag
Пользовательский пользовательский класс памяти, который определяет данные как макрос в указанном заголовочном файле
Для получения дополнительной информации смотрите Разрешить символическую спецификацию размерности (Simulink) и Реализовать варианты размерности для размеров массивов в Сгенерированном коде (Embedded Coder).
Диаграммы Stateflow, которые используют MATLAB в качестве языка действий, не поддерживают распространение символьной размерности. Чтобы задать размер данных при помощи параметров Simulink, снимите флажок Allow symbolic dimension specification.
size
| fi
(Fixed-Point Designer)