coder.newtype

Создайте coder.Type объект

Описание

пример

Примечание

coder.newtype усовершенствованная функция, которую можно использовать, чтобы управлять coder.Type объект. Рассмотрите использование coder.typeof вместо этого. coder.typeof создает тип из примера MATLAB®.

Можно также создать и отредактировать 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.

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

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

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

coder.PrimitiveType
   :inf×3 double

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

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

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

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

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

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]);
coder.newtype('cell',{ta, tb})
% returns 1x2 heterogeneous cell
ans = 

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

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

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

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

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

Фиксированная точка использует значение по умолчанию 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
    
    end
    function a = calcarea(obj)
    a = obj.side * obj.side;
    end
end

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

t = coder.newtype('mySquare')

3. Измените тип свойства side.

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

true для размерностей, для который sz задает верхнюю границу infложь для всех других размерностей.

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

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

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

Перечислимые величины класса.

Пример: 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 чтобы представлять входные параметры графического процессора, выделение памяти (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