coder.StructType class

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

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

Описание

Задает набор массивов структур, которые должен принять сгенерированный код. Используйте только с codegen -args опция. Не передавайте как вход сгенерированной 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". Задайте путь к файлу с помощью codegen -I опция или параметр 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