exponenta event banner

Различия между MATLAB и C как синтаксисом языка действий

Диаграммы Stateflow ® в моделях Simulink ® имеют свойство языка действий, определяющее синтаксис действий состояния и перехода. Значок в левом нижнем углу холста диаграммы указывает язык действий для диаграммы.

  • MATLAB ® в качестве языка действий.

  • C как язык действий.

MATLAB - это синтаксис языка действий по умолчанию для новых диаграмм Stateflow. Чтобы создать диаграмму, использующую C в качестве языка действий, введите:

sfnew -c

Сравнение функциональных возможностей языков действий

В этой таблице перечислены наиболее существенные различия в функциональности двух языков действий.

ФункциональностьMATLAB как язык действийC как язык действий

Индексация вектора и матрицы

Одноосновное индексирование, разделенное скобками и запятыми. Например, A(4,5). См. раздел Поддерживаемые операции для векторов и матриц.

Индексация по нулю, ограниченная квадратными скобками. Например, A[3][4]. См. раздел Поддерживаемые операции для векторов и матриц.

Конструкции C:

  • Операции приращения и уменьшения a++ и a--

  • Операции назначения a += b, a –= b, a *= b, и a /= b

  • Операции по оценке a != b и !a

  • Двоичные операции a %% b, a >> b, a << b, a & b, и a | b

  • Маркеры комментариев // и /* */

Автоматическая коррекция синтаксиса MATLAB. Например, a++ корректируется до a = a+1. См. раздел Автоматическая коррекция при использовании MATLAB в качестве языка действий.

Поддерживается. См. раздел Поддерживаемые операции для данных диаграммы.

Операторы управления условиями и контурами в действиях состояния

Поддерживается. Например, можно использовать if, for, и while в действиях состояния. См. раздел Циклы и условные операторы.

Не поддерживается. Вместо условных шаблонов и шаблонов циклов используйте графические функции. См. раздел Повторное использование логических шаблонов путем определения графических функций.

Формат действий перехода

Автокоррекция заключает действия перехода с раскосами {}. См. раздел Действия перехода.

Не требуется заключать действия перехода с раскосами {}. См. раздел Действия перехода.

Упорядочение параллельных состояний

Только явное упорядочение. См. раздел Порядок выполнения для параллельных состояний.

Явное или неявное упорядочение. См. раздел Порядок выполнения для параллельных состояний.

Данные переменного размера

Доступ и изменение входных, выходных и локальных данных переменного размера в действиях состояния и перехода.

Доступ и изменение входных и выходных данных переменного размера с помощью:

  • Функции MATLAB

  • Функции симулятора

  • Таблицы истинности, использующие MATLAB в качестве языка действий

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

Конструкции с фиксированной точкой:

  • Оператор специального назначения :=

  • Контекстно-зависимые константы, такие как 4.3C

Не поддерживается.

Поддерживается. См. разделы Переопределение продвижения с фиксированной точкой в диаграммах C и контекстно-зависимые константы с фиксированной точкой.

Сложные данные

Использовать нотацию комплексного числа a + bi или complex оператор. См. раздел Поддерживаемые операции для сложных данных.

Используйте complex оператор. Нотация комплексного номера не поддерживается. См. раздел Поддерживаемые операции для сложных данных.

Распространение типа данных

Следует правилам ввода MATLAB. Например, добавление данных типа double к данным типа int32 результаты в данных типа int32.

Следует правилам типизации C. Например, добавление данных типа double к данным типа int32 результаты в данных типа double.

Явные операции приведения типа

Используйте одну из следующих форм литья:

  • Функция преобразования типа MATLAB. Например, single(x).

  • cast с ключевым словом type. Например, cast(x,'int8').

  • cast функции с помощью 'like' ключевое слово. Например, cast(x,'like',z).

type оператор не поддерживается. См. раздел Операции литейной формы.

Используйте одну из следующих форм литья:

  • Функция преобразования типа MATLAB. Например, uint16(x).

  • cast функции с помощью type оператор. Например, cast(x,type(z)).

Введите ключевые слова для cast функции не поддерживаются. См. раздел Операции литейной формы.

Скалярное расширение

Не поддерживается.

Поддерживается. См. раздел Назначение значений всем элементам матрицы.
Строковые данные

Не поддерживается.

Поддерживается. См. раздел Управление текстовой информацией с помощью строк.

Спецификация свойств данных:

  • Первый индекс

  • Сохранить окончательное значение в базовом рабочем пространстве

  • Единицы

Не поддерживается.

Поддерживается. Дополнительные сведения см. в разделе:

Объем данных в графических функциях, таблицах истинности и MATLAB

Constant, Parameter, Input, OutputLocal, Constant, Parameter, Input, Output, Temporary

Точечная нотация для указания состояний, локальных данных, сообщений и локальных событий в функциях MATLAB

Поддерживается. См. раздел Идентификация данных с помощью точечного обозначения.

Не поддерживается.

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

Поведение зависит от параметра конфигурации Импорт пользовательского кода.

  • Если включен параметр «Импорт пользовательского кода», в состояниях и переходах поддерживаются как пользовательские функции кода, так и переменные (по умолчанию).

  • Если параметр «Импорт пользовательского кода» отключен, поддерживаются только пользовательские функции кода. Используйте coder.ceval (Кодер MATLAB).

См. разделы Пользовательский код и Импорт пользовательского кода (Simulink).

Пользовательские функции и переменные кода поддерживаются в состояниях и переходах.

Макет основного массива строк в сгенерированном коде

Не поддерживается.

Поддерживается. См. раздел Компоновка основного массива строк.

Компоновка многомерного массива в сгенерированном коде

Не поддерживается.

Поддерживается для локальных данных. См. раздел Компоновка многомерного массива.

Параметры структуры

Поддерживаются настраиваемые и не настраиваемые параметры.

Поддерживаются только настраиваемые параметры.

Использование глобальных fimath объект

Поддерживается.

Не поддерживается.

См. также

Связанные темы