exponenta event banner

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 с помощью дополнительных параметров, указанных в качестве одного или нескольких аргументов пары 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; 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 объект, который может представлять тип ввода графического процессора. Для этого параметра требуется Coder™ графического процессора.

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

свернуть все

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

Ограничения

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

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

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

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

coder.typeof

Представлен в R2011a