coder.newtype

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

Описание

coder.newtype функция является усовершенствованной функцией, которую можно использовать, чтобы управлять coder.Type объект. Рассмотреть использование coder.typeof вместо coder.newtype. Функция coder.typeof создает тип из MATLAB® пример. По умолчанию, t = coder.newtypeClassName ) не присваивает свойств класса, 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 объект при помощи дополнительных опций, заданных как одна или несколько пар значений - Name, Value.

пример

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 и дополнительные опции заданы одной или несколькими парами значений - Name, Value.

пример

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]);

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

свернуть все

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

Пример: 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

Вектор размера, задающий каждую размерность текстового объекта. 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ложь для всех других размерностей.

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

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

Типы данных: логический

Задает фактическое значение константы.

Пример: 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 имя аргумента и 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 чтобы представлять входные параметры графического процессора, выделение памяти (malloc) свойство режима настройки графического процессора кода возражает против 'discrete'.

Советы

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

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

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

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

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

coder.typeof

Введенный в R2011a