coder.newtype

Создание coder.Type объект, чтобы представлять тип входного параметра функции точки входа

Описание

coder.newtype функция является расширенной функцией, которую вы можете использовать, чтобы управлять coder.Type объект. Рассмотрите использование coder.typeof вместо coder.newtype. Функция coder.typeof создает тип из MATLAB® пример. По умолчанию t = coder.newtype('class_name') не присваивает никаких свойств класса, class_name к объекту t.

пример

Примечание

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

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

t = coder.newtype(numeric_class,sz,variable_dims, Name,Value) создает coder.Type объект с использованием дополнительных опций, заданных как один или несколько аргументов в виде пар «имя, значение».

пример

t = coder.newtype('constant',value) создает coder.Constant объект, представляющий одно значение. Используйте этот тип, чтобы задать значение, которое должно рассматриваться как константа в сгенерированном коде.

пример

t = coder.newtype('struct',struct_fields,sz,variable_dims) создает coder.StructType объект для массива структур, который имеет те же поля, что и скалярная структура struct_fields. Тип массива структур имеет размер, заданный как sz и размерности переменного размера, заданные variable_dims.

пример

t = coder.newtype('cell',cells,sz,variable_dims) создает coder.CellType объект для массива ячеек, тип камер и камер которого задан как cells. Тип массива ячеек имеет размер, заданный sz и размерности переменного размера, заданные variable_dims. Вы не можете изменить количество камер или задать размерности переменного размера для гетерогенного массива ячеек.

пример

t = coder.newtype('embedded.fi',numerictype,sz,variable_dims, Name,Value) создает coder.FiType объект, представляющий набор значений с фиксированной точкой, которые имеют numerictype и дополнительные опции, заданные одним или несколькими аргументами в виде пар Имя, Значение.

пример

t = coder.newtype(enum_value,sz,variable_dims) создает coder.Type объект, представляющий набор значений перечисления класса enum_value.

пример

t = coder.newtype('class_name') создает coder.ClassType объект для объекта класса class_name. Новый объект не имеет никаких свойств класса class_name.

пример

t = coder.newtype('string') создает тип для строкового скаляра. Строковый скаляр содержит одну часть текста, представленную в виде вектора символов. Чтобы задать размер вектора символов и является ли второе измерение переменным, создайте тип вектора символов и присвойте его Value свойство типа строковый скаляр. Для примера, t.Properties.Value = coder.newtype('char',[1 10],[0 1]) задает, что вектор символов внутри строкового скаляра имеет переменный размер с верхней границей 10.

Примеры

свернуть все

Создайте тип для матрицы переменного размера с двойной точностью.

t = coder.newtype('double',[2 3 4],[1 1 0])
t = 

coder.PrimitiveType
   :2×:3×4 double
% ':' indicates variable-size dimensions

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

t = coder.newtype('double',[inf,3]) 
t = 

coder.PrimitiveType
   :inf×3 double

t = coder.newtype('double',[inf,3],[1 0])
%  also returns 
t = 

coder.PrimitiveType
   :inf×3 double
%  ':' indicates variable-size dimensions

Создайте тип для матрицы двойников, первой размерности без ограничений и второго измерения с переменным размером, который имеет верхнюю границу 3.

t = coder.newtype('double',[inf,3],[0 1])
t = 

coder.PrimitiveType
   :inf×:3 double

%  ':' indicates variable-size dimensions

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

ta = coder.newtype('int8',[1 1]);
tb = coder.newtype('double',[1 2],[1 1]);
t = coder.newtype('struct',struct('a',ta,'b',tb),[1 1],[1 1])
t = 

coder.StructType
   :1×:1 struct
      a: 1×1 int8
      b: :1×:2 double
% ':' indicates variable-size dimensions

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

ta = coder.newtype('int8',[1 1]);
tb = coder.newtype('double',[1 2],[1 1]);
t = coder.newtype('cell',{ta, tb})
t = 

coder.CellType
   1×2 heterogeneous cell 
      f1: 1×1 int8
      f2: :1×:2 double
% ':' indicates variable-size dimensions

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

ta = coder.newtype('int8',[1 1]);
tb = coder.newtype('int8',[1 2],[1 1]);
t = coder.newtype('cell',{ta, tb},[1,1],[1,1])
t = 

coder.CellType
   :1×:1 homogeneous cell 
      base: :1×:2 int8
% ':' indicates variable-size dimensions

Создайте новый тип константы для использования в генерации кода.

t = coder.newtype('constant',42)
t = 

coder.Constant
       42

Создайте coder.EnumType объект с использованием имени существующего перечисления MATLAB.

1. Задайте MyColors перечисления. По пути MATLAB создайте файл с именем MyColors, содержащий:

classdef MyColors < int32
    enumeration
        green(1),
        red(2),
    end
end

2. Создайте coder.EnumType объект из этого перечисления.

t = coder.newtype('MyColors')
t = 

coder.EnumType
   1×1 MyColors

Создайте тип с фиксированной точкой для использования в генерации кода.

Тип с фиксированной точкой использует значения по умолчанию fimath.

t = coder.newtype('embedded.fi',numerictype(1, 16, 15),[1 2])
t = 

coder.FiType
   1×2 embedded.fi
             DataTypeMode: Fixed-point: binary point scaling
               Signedness: Signed
               WordLength: 16
           FractionLength: 15

Создайте тип для объекта, который будет использоваться в генерации кода.

1. Создайте этот класс значений:

classdef mySquare
    properties
        side;
    end
    
    methods
        function obj = mySquare(val)
            if nargin > 0
                obj.side = val;
            end
        end
        
        function a = calcarea(obj)
            a = obj.side * obj.side;
        end
        
    end
end

2. Создайте тип для объекта, который имеет те же свойства, что и mySquare.

t = coder.newtype('mySquare');

3. Предыдущий шаг создает coder.ClassType тип для t, но не присваивает никаких свойств mySquare к нему. Для обеспечения t обладает всеми свойствами mySquare, измените тип свойства side при помощи t.Properties.

t.Properties.side = coder.typeof(int8(3))
t = 

coder.ClassType
   1×1 mySquare   
      side: 1×1 int8

Создайте тип для строкового скаляра, который будет использоваться в генерации кода.

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

t = coder.newtype('string');

2. Задайте размер.

t.Properties.Value = coder.newtype('char',[1,10]);

3. Установите размер строки с верхней границей 10.

t.Properties.Value = coder.newtype('char',[1,10],[0,1]);

4. Сделайте строку переменным размером без верхней границы.

t.Properties.Value = coder.newtype('char',[1,inf]);

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

свернуть все

Класс множества значений, представленных объектом type.

Пример: coder.newtype('double',[6,3]);

Типы данных: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | cell | function_handle | categorical | datetime | duration | calendarDuration | fi
Поддержка комплексного числа: Да

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

Пример: coder.newtype('struct',struct('a',ta,'b',tb));

Типы данных: struct

Массив ячеек coder.Type объекты, которые задают типы камер в новом типе массива ячеек.

Пример: coder.newtype('cell',{ta,tb});

Типы данных: cell

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

Пример: coder.newtype('int8',[1 2]);

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Поддержка комплексного числа: Да

Имя класса, из которого coder.ClassType создается. Задайте как вектор символов или строковый скаляр. class_name должно быть именем класса значений.

Пример: coder.newtype('mySquare')

Типы данных: char | string

Значение variable_dims является true для размерностей, для которых sz задает верхнюю границу inf; false для всех других размерностей.

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

Пример: coder.newtype('char',[1,10],[0,1]);

Типы данных: logical

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

Пример: coder.newtype('constant',41);

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | cell

Значения перечисления для класса.

Пример: coder.newtype('MyColors');

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | cell | function_handle | categorical | datetime | duration | calendarDuration | fi
Поддержка комплексного числа: Да

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: coder.newtype('embedded.fi',numerictype(1,16,15),[1 2])

Задайте complex на true для создания coder.Type объект, который может представлять комплексные числа. Тип должен поддерживать комплексные данные.

Задайте локальные fimath. Если вы не задаете fimathгенератор кода использует значения fimath по умолчанию.

Использование только с

t = coder.newtype('embedded.fi',numerictype,sz,variable_dims,Name,Value)

Задайте sparse на true для создания coder.Type объект, представляющий разреженные данные. Тип должен поддерживать разреженные данные.

Не для использования с

t = coder.newtype('embedded.fi',numerictype,sz,variable_dims,Name,Value)

Задайте gpu на true для создания coder.Type объект, который может представлять входной тип GPU. Для этой опции требуется GPU Coder™.

Выходные аргументы

свернуть все

Новый coder.Type объект.

Ограничения

  • Для разреженных матриц, coder.newtype отбрасывает верхние границы для размерностей переменного размера.

  • Для входных типов GPU поддерживаются только ограниченные числовые и логические базовые типы. Скалярные графические процессоры массивы, структуры, массивы ячеек, классы, перечисляемые типы, символы, половинная точность и типы данных с фиксированной точкой не поддерживаются.

  • При использовании coder.newtype для представления входных параметров GPU свойство malloc mode объекта конфигурации кода GPU to 'discrete'.

Совет

  • coder.newtype функция фиксирует размер синглтонной размерности, если только variable_dims аргумент явным образом задает, что синглтонная размерность имеет переменный размер.

    Например, этот код задает 1-by-: 10 double. Первая размерность (синглтонная размерность) имеет фиксированный размер. Второе измерение имеет переменный размер.

    t = coder.newtype('double',[1 10],1)
    Напротив, этот код задает: 1-by-: 10 double. Обе размерности имеют переменный размер.
    t = coder.newtype('double',[1 10],[1 1])

  • Для блока MATLAB Function синглтонные размерности входа или выхода сигналов не могут иметь переменный размер.

Альтернативы

coder.typeof

Введенный в R2011a