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