Когда вы генерируете код из MATLAB® код, который содержит массивы ячеек, генератор кода классифицирует массивы ячеек как homogeneous или heterogeneous. Эта классификация определяет, как массив ячеек представлен в сгенерированном коде. Это также определяет, как можно использовать массив ячеек в коде MATLAB, из которого вы генерируете код.
Когда вы используете массивы ячеек в коде MATLAB, который предназначен для генерации кода, вы должны придерживаться определенных ограничений. Смотрите Ограничения массива ячеек для Генерации кода.
Однородный массив ячеек имеет следующие характеристики:
Массив ячеек представлен как массив в сгенерированном коде.
Все элементы имеют одинаковые свойства. Тип, сопоставленный с массивом ячеек, задает свойства всех элементов, а не свойства отдельных элементов.
Массив ячеек может быть переменного размера.
Можно индексировать в массив ячеек индекс, значение которого определяется во время выполнения.
Гетерогенный массив ячеек имеет следующие характеристики:
Массив ячеек представлен как структура в сгенерированном коде. Каждый элемент представлен как поле структуры.
Элементы могут иметь различные свойства. Тип, сопоставленный с массивом ячеек, задает свойства каждого элемента по отдельности.
Массив ячеек не может быть переменным размером.
Вы должны индексировать в массив ячеек с постоянным индексом или с for
- циклы с постоянными границами.
Генератор кода использует эвристику, чтобы определить классификацию массива ячеек как однородную или неоднородную. Он рассматривает свойства (класс, размер, сложность) элементов и других факторов, таких как то, как использование массива ячеек в вашей программе. В зависимости от того, как вы используете массив ячеек, генератор кода может классифицировать массив ячеек как однородный в одном случае и неоднородный в другом случае. Например, рассмотрим массив ячеек {1 [2 3]}
. Генератор кода может классифицировать этот массив ячеек как гетерогенный массив ячеек 1 на 2. Первый элемент является двойным скаляром. Второй элемент является массивом типа double 1 на 2. Однако, если вы индексируете в этот массив ячеек индекс, значение которого определяется во время исполнения, генератор кода классифицирует его как однородный массив ячеек. Элементы являются массивами типа double переменного размера с верхней границей 2.
Для массивов ячеек с определенными характеристиками вы не можете управлять классификацией как однородной или неоднородной:
Если элементы имеют различные классы, массив ячеек должен быть неоднородным.
Если массив ячеек имеет переменный размер, он должен быть однородным.
Если вы индексируете в массив ячеек индекс, значение которого определяется во время выполнения, массив ячеек должен быть однородным.
Для других массивов ячеек можно управлять классификацией как однородной или неоднородной.
Если элементы массива ячеек имеют одинаковый класс, можно заставить массив ячеек быть однородным при помощи coder.varsize
. Смотрите, является ли массив ячеек переменным - размером.
Чтобы увидеть, является ли массив ячеек однородным или неоднородным, смотрите переменную в отчете Функция MATLAB.
Для однородного массива ячеек в отчете есть одна запись, которая задает свойства всех элементов. Обозначение {:}
указывает, что все элементы массива ячеек имеют одинаковые свойства.
Для гетерогенного массива ячеек в отчете есть запись для каждого элемента. Для примера - для гетерогенного массива ячеек c
с двумя элементами, запись для c{1}
показывает свойства для первого элемента. Запись для c{2}
показывает свойства второго элемента.
coder.cstructname
| coder.varsize