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

Для гетерогенного массива ячеек отчет содержит запись для каждого элемента. Например, для гетерогенного массива ячеек c с двумя элементами, запись для c{1} показывает свойства первого элемента. Запись для c{2} показывает свойства второго элемента.

coder.cstructname | coder.varsize