coder.StructType class

Пакет: coder
Суперклассы: 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 опция или параметр Additional include directories в MATLAB® Coder™ диалоговое окно параметров проекта Custom Code вкладку.

По умолчанию сгенерированный код содержит #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