exponenta event banner

класс coder.StructType

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

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

Описание

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

Строительство

Примечание

Можно также создавать и редактировать coder.Type объектов в интерактивном режиме с помощью редактора типов кодеров. См. раздел Создание и редактирование типов ввода с помощью редактора типов кодеров.

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).

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

Свойства

Alignment

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

Alignment должно быть либо -1 или мощность 2 это не более 128.

ClassName

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

Extern

Определяется ли тип структуры на стороне.

Fields

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

HeaderFile

Если тип структуры определен извне, имя файла заголовка, содержащего внешнее определение структуры, например, "mystruct.h". Укажите путь к файлу с помощью codegen -I параметр или параметр «Дополнительные каталоги включения» в диалоговом окне «Параметры проекта MATLAB ® Coder™» на вкладке «Пользовательский код».

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

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

SizeVector

Верхний размер массивов в этом наборе.

VariableDims

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

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

Значение. Сведения о том, как классы значений влияют на операции копирования, см. в разделе Копирование объектов.

Примеры

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

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