кодер. Класс StructType

Пакет: кодер
Суперклассы: coder.ArrayType

Представляйте набор массивов структур MATLAB

Описание

Задает набор массивов структур, которые должен принять сгенерированный код. Используйте только с опцией -args codegen. Не передавайте как вход сгенерированной MEX-функции.

Конструкция

t=coder.typeof(struct_v) создает объект coder.StructType для структуры с теми же полями как скалярная структура struct_v.

t=coder.typeof(struct_v, sz, variable_dims) возвращает измененную копию coder.typeof(struct_v) с (верхней границей) размер, заданный sz и переменными размерностями variable_dims. Если sz задает inf для размерности, то размер размерности принят, чтобы быть неограниченным, и размерность принята, чтобы быть переменная измеренный. Когда sz [], (верхняя граница), размеры struct_v остаются неизменными. Если параметр входа variable_dims не задан, размерности типа приняты, чтобы быть зафиксированными за исключением тех, которые неограниченны. Когда variable_dims является скаляром, он применяется к ограниченным размерностям, которые не являются 1 или 0 (которые приняты, чтобы быть зафиксированными).

t=coder.newtype('struct', struct_v, sz, variable_dims) создает объект coder.StructType для массива структур с теми же полями как скалярная структура struct_v и (верхняя граница) размер sz и переменные размерности variable_dims. Если sz задает inf для размерности, то размер размерности принят, чтобы быть неограниченным, и размерность принята, чтобы быть переменная измеренный. Когда variable_dims не задан, размерности типа приняты, чтобы быть зафиксированными за исключением тех, которые неограниченны. Когда variable_dims является скаляром, он применяется к размерностям типа, кроме того, если размерностью является 1 или 0, который принят, чтобы быть зафиксированным.

Входные параметры

struct_v

Скалярная структура раньше задавала поля в новом типе структуры.

sz

Вектор размера, задающий каждую размерность текстового объекта.

Значение по умолчанию: [1 1] для coder.newtype

variable_dims

Логический вектор, который задает, является ли каждая размерность переменным размером (TRUE) или (FALSE) фиксированный размер.

Значение по умолчанию: ложь (размер (sz)) | sz == Inf для coder.newtype

Свойства

Alignment

Выравнивание памяти во время выполнения структур этого типа в байтах. Если вы имеете лицензию Embedded Coder® и пользуетесь Заменяющими Библиотеками Кода (CRLs), CRLs обеспечивают способность выровняться, объекты данных передали в заменяющую функцию заданному контуру. Эта возможность позволяет вам использовать в своих интересах целевые реализации функции, которые требуют, чтобы данные были выровнены. По умолчанию структура не выравнивается на определенном контуре, таким образом, она не будет соответствующей функциями CRL, которые требуют выравнивания.

Alignment должен быть или -1 или степень 2, который является не больше, чем 128.

ClassName

Класс значений в этом наборе.

Extern

Задан ли тип структуры внешне.

Fields

Структура, дающая coder.Type каждого поля в структуре.

HeaderFile

Если тип структуры внешне задан, имя заголовочного файла, который содержит внешнее определение структуры, например, "mystruct.h". Задайте путь к файлу с помощью опции -I codegen или параметра Additional include directories во вкладке диалогового окна Custom Code настроек проекта MATLAB® Coder™.

По умолчанию сгенерированный код содержит операторы #include для пользовательских заголовочных файлов после стандартных заголовочных файлов. Если стандартный заголовочный файл относится к пользовательскому типу структуры, то компиляция перестала работать. Путем определения опции HeaderFile MATLAB Coder включает тот заголовочный файл точно в точку, где это требуется.

Должен быть непустой символьный вектор или представить скаляр в виде строки.

SizeVector

Размер верхней границы массивов в этом наборе.

VariableDims

Вектор раньше задавал, фиксируется ли каждая размерность массива или переменный размер. Если векторным элементом является true, соответствующая размерность является переменным размером.

Копировать семантику

Значение. Чтобы изучить, как классы значения влияют на операции копии, смотрите Копирование Объектов (MATLAB).

Примеры

Создайте тип для структуры с полем переменного размера.

x.a = coder.typeof(0,[3 5],1);
x.b = magic(3);
coder.typeof(x)
% Returns 
% coder.StructType
%    1x1 struct
%      a:  :3x:5 double
%      b:  3x3  double
% ':' indicates variable-size dimensions

Создайте объект coder.StructType, затем вызывают codegen, чтобы сгенерировать библиотеку C для функционального fcn.m, который имеет входной параметр того этого типа

  1. Создайте новый тип структуры.

    ta = coder.newtype('int8',[1 1]);
    tb = coder.newtype('double',[1 2],[1 1]);
    z = coder.newtype('struct',struct('a',ta,'b',tb))
    % Returns
    % coder.StructType
    %   1x1 struct
    %      a: 1x1 int8 
    %      b: :1x:2 double  
  2. Вызовите codegen, чтобы сгенерировать библиотеку C для функции MATLAB fcn.m, который имеет входной параметр того этого типа.

    % Use the -config:lib option to generate a C library
    codegen -config:lib fcn -args {z}

Создайте объект coder.StructType, который использует внешне заданный тип структуры.

  1. Создайте тип, который использует внешне заданный тип структуры.

    S.a = coder.typeof(double(0));
    S.b = coder.typeof(single(0));
    T = coder.typeof(S);
    T = coder.cstructname(T,'mytype','extern','HeaderFile','myheader.h');
    
    T = 
    
    coder.StructType
       1x1 extern mytype (myheader.h) struct
          a: 1x1 double 
          b: 1x1 single
  2. Просмотрите типы полей структуры.

    T.Fields
    ans = 
    
        a: [1x1 coder.PrimitiveType]
        b: [1x1 coder.PrimitiveType]

Введенный в R2011a