Задайте размер данных Stateflow

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 d2dn], где di - размер ith размерность.

В графики, которые используют 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

Чтобы избежать путаницы, не задавайте размер данных с помощью имени переменной, которое вы задаете на нескольких уровнях вашей модели.

Распространение символьных размерностей данных Stateflow

Когда вы выбираете Allow symbolic dimension specification параметра конфигурации модели, графиков, которые используют C в качестве языка действий, могут распространить символические размерности данных Stateflow по всей модели. Если у вас есть Embedded Coder®символические размерности переходят в сгенерированный код для ERT-целей. Задайте размер символических размерностей при помощи параметров Simulink с одним из следующих классов памяти:

  • Define или ImportedDefine с заданным файлом заголовка

  • CompilerFlag

  • Пользовательский пользовательский класс памяти, который определяет данные как макрос в указанном заголовочном файле

Для получения дополнительной информации смотрите Разрешить символическую спецификацию размерности (Simulink) и Реализовать варианты размерности для размеров массивов в Сгенерированном коде (Embedded Coder).

Диаграммы Stateflow, которые используют MATLAB в качестве языка действий, не поддерживают распространение символьной размерности. Чтобы задать размер данных при помощи параметров Simulink, снимите флажок Allow symbolic dimension specification.

См. также

| (Fixed-Point Designer)

Похожие темы